asynchronous:服务器启动后连接到MongoDB

我很想知道关于Node.jsasynchronous和MongoDB的一些事情。 如果服务器在我连接之前启动,并且我的模板或Ajax依赖于来自数据库的数据将服务(我预编译我的句柄)HTML文件失败或将我的模板/ Ajax等待连接,然后继续?

如果它的工作,我想更好地了解它是如何工作的! 如果失败了,我该如何“优雅地修复”呢?

这是一个解决scheme的例子,使用提升(对我来说似乎很糟糕):

//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}.`); }); } }); 

是的,这是一个正确的方法来做到这一点。 如果要在服务器开始提供服务请求之前确保数据库可用,则需要在数据库连接方法的callback中启动服务器。

像Hapi这样的更高级别的框架可能会为您提供一些机制来简化这种情况,因为在开始之前您需要等待几件事情。 例如,请参阅Hapi插件: