我很想知道关于 Node.js async和MongoDB 的一些事情。 如果服务器在我连接之前启动,并且我的模板或Ajax依赖于来自数据库的数据将服务(我预编译我的把手)HTML文件失败或我的模板/ Ajax将等待连接然后继续?
如果它有效,我很想更好地理解它是如何工作的! 如果它失败了,我怎么能优雅地“修理”它呢?
这是一个解决方案的例子,使用提升(对我来说似乎很糟糕):
//connect to db
mongodb.connect("someDBplace",
(err, db)=>{
if(err){
return generalLogger.error(`The database has failed to connect: ${err}.`);
}else{ //start the server now:
generalLogger.info(`Connected to database: ${stringify(db.databaseName)}.`);
server.listen(`${port}`, (err)=>{
if(err){
generalLogger.error(err);
}
//for demo: console th eMIMEtype
generalLogger.info(`The Server started on port: ${port}.`);
});
}
});
答案 0 :(得分:1)
是的,这是一种正确的方法。如果要在服务器开始提供请求之前确保数据库可用,则需要在数据库连接方法的回调中启动服务器。
一些更高级别的框架(如Hapi)可能会为您提供一些机制来简化案例,以便在开始之前需要等待几件事情。例如,请参阅Hapi插件: