让节点等待mongoDB启动

时间:2018-04-19 16:59:37

标签: node.js mongodb pm2

我使用pm2一起启动我的数据库和我的快速节点Web服务器。当我用pm2 start all启动它时,它工作正常; mongod在节点之前启动,它可以连接。但是当我使用pm2 reload all节点无法连接到数据库时,因为它在mongod完全初始化之前尝试连接。这基本上与启动Web服务器相同,而不是mongod。

如果失败,如何让Web服务器重试连接到mongod?在节点mongo驱动程序中有一个称为重新连接的功能,但它只适用于以前有连接时丢失连接。

1 个答案:

答案 0 :(得分:0)

出错,你可以调用另一个连接函数,或者如果使用promises,你可以使用标准循环重试。

//call the following in an async function
var db = null
while (db === null) {
  try {
    db = await Promise((resolve, reject) => {
      MongoClient.connect("mongodb://localhost:27017/MyDb", function (err, db) {
        if (err) reject(err);
        resolve(db)
      })
    })
    //insert a sleep so you're waiting a bit to reconnect
  } catch (e) {
    console.log(e)
  }
}