在我的 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 服务器。
目前,如果db连接不成功,app会终止,但是在终止之前已经创建了http server,因为db创建失败是异步报告的。
我需要阻止http服务器创建直到db连接成功,但我需要将服务器创建代码保留在bin/www.js
本身,而不是将其移动到db连接成功回调中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()
})
关于node.js - 创建http服务器之前的Nodejs : wait for mongodb connection to be made,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42186663/