在我的app.js
中,我在应用启动时创建了一个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')
),其中创建了http服务器。
目前,如果数据库连接不成功,应用程序将终止,但在终止之前已创建http服务器,因为数据库创建失败是异步报告的。
我需要阻止http服务器创建,直到数据库连接成功,但我需要将服务器创建代码保留在bin/www.js
本身,而不是将其移动到app.js
中的数据库连接成功回调。
我有什么方法可以做到这一点吗?
答案 0 :(得分:2)
只有在连接完成后才能启动服务器:
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()
})