我使用pm2一起启动我的数据库和我的快速节点Web服务器。当我用pm2 start all
启动它时,它工作正常; mongod在节点之前启动,它可以连接。但是当我使用pm2 reload all
节点无法连接到数据库时,因为它在mongod完全初始化之前尝试连接。这基本上与启动Web服务器相同,而不是mongod。
如果失败,如何让Web服务器重试连接到mongod?在节点mongo驱动程序中有一个称为重新连接的功能,但它只适用于以前有连接时丢失连接。
答案 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)
}
}