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

时间:2017-02-12 10:50:37

标签: node.js mongodb

在我的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中的数据库连接成功回调。

我有什么方法可以做到这一点吗?

1 个答案:

答案 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()
})