Nodejs:在创buildhttp服务器之前等待mongodb连接

在我的app.js ,当应用程序启动时,我创build了一个mongodb连接。

 mongoose.connect(config.db, {}); var db = mongoose.connection; db.on('error', function () { log.error("Failed to connect to database"); process.exit(1); }); db.once('open', function () { log.info("Connected to database"); }); 

app.jsbin/www.js (使用require('./../app') )来使用,其中创build了http服务器。

目前,如果数据库连接不成功,应用程序终止,但在终止之前创buildHTTP服务器,因为数据库创build失败是asynchronous报告。

我需要阻止http服务器创build,直到数据库连接成功,但我需要保持在bin/www.js本身的服务器创build代码,而不bin/www.js其移动到数据库连接成功callback在app.js

有什么办法可以做到这一点?

只有在连接完成后才能启动服务器:

 db.once('open', function () { log.info('Connected to database'); launchMyServer() }); 

或者如果你想在另一个文件中使用它:

 module.exports = function initConnection(callback) { mongoose.connect(config.db, {}); var db = mongoose.connection; db.on('error', function (err) { log.error('Failed to connect to database'); process.exit(1); }); db.once('open', function () { log.info("Connected to database"); callback(); }); }; 

从你的www.js文件中:

 const initConnection = require('./../app') initConnection(function () { launchMyServer() })