Node.js:创建HTTP服务器之前,等待mongodb连接建立

Lah*_*ima 5 mongodb node.js

在我的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");
});
Run Code Online (Sandbox Code Playgroud)

app.js从用于bin/www.js(有require('./../app')),在其中创建HTTP服务器。

当前,如果数据库连接失败,则应用程序终止,但是在终止之前创建了http服务器,因为数据库创建失败是异步报告的。

在数据库连接成功之前,我需要阻止http服务器的创建,但是我需要保留服务器创建代码bin/www.js本身,而不必在中将其移动到数据库连接成功的回调中app.js

有什么办法可以做到吗?

L. *_*yer 8

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

db.once('open', function () {
   log.info('Connected to database');
   launchMyServer()
});
Run Code Online (Sandbox Code Playgroud)

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

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();
  });
};
Run Code Online (Sandbox Code Playgroud)

从你的www.js文件中:

const initConnection = require('./../app')

initConnection(function () {
  launchMyServer()
})
Run Code Online (Sandbox Code Playgroud)