我先说明下情况: 我用的是oracle数据库, 一般情况下(之前一直都是) 当我项目启动的时候,也就是在终端输入node server.js以后 立马就会显示数据库已经连接上了。 但是 今天下午,数据库卡了还是怎么地,连接要一会时间,所以在这种情况下,项目启动了,数据库实际上还没有连接。然后就各种报错了. 因为是练手的代码,所以我没有写异常捕捉,而且我认为如果是中途数据库断开了,捕捉异常是可以的,像这种项目启动的时候数据库登陆有延迟,如果去捕捉异常不太合适, 所以我自己有个想法,就是在 server.listen(3000); 监听启动之前 写一个死循环 来等待 数据库实例返回,
if(db.connection!=undefined){
server.listen(3000);
console.log("3000端口启动了!")
}else{
while (true){
if(db.connection!=undefined){
console.log("连接了!");
}
貌似 这个真是单线程里面的死循环,就这样死了....
有没有前辈有好的解决方案,坐等前辈解答(顺便去看看nodejs的Process)
}
}
2 回复
app.get('/',function(req,res,next){
if(db.connection!=undefined){
res.render('sampleInput.html')
console.log("3000端口启动了!!")
}else{
res.render('err.html',{msg:"数据库正在链接中.."})
setTimeout(function(){
res.redirect('sampleInput.html')
},10000)
}
});
本来是想 重定向一个URL 但是这样会报错 Can’t set headers after they are sent. 不知道前辈们是怎么搞重定向的问题的