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.js
从bin/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() })