node.js - 创建http服务器之前的Nodejs : wait for mongodb connection to be made,

标签 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 服务器。

目前,如果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/

相关文章:

mongodb - 各种 NoSQL 数据库快速引用指南

javascript - mongodb 服务器端 javascript 实际上是客户端?

java - 无法使用java连接云上的mongodb

angularjs - Sails/Angular 跨源请求被阻止

node.js - 如何在nodejs expressjs中将ipv6地址转换为ipv4地址?

node.js - 使用 webrtc 和 Node js 的点对点视频流和套接字 io 远程视频不渲染

javascript - 将数据导出到 CSV 文件 NodejS Express

node.js - 如何停止作为服务运行的 Node js服务器

javascript - 通过正则表达式匹配计算 MongoDB 中的记录

Play 框架中通过 SSL 的 MongoDB 连接