我正在使用 Mongoose 4.13.7
我想连接到mongo,但如果发生错误,我想重新连接。但在5次重新连接后,如果发生错误,进程应该退出。
这是代码:
var count = 0;
handleDisconnect();
function handleDisconnect(){
count++;
console.log('Trying to connect to mongo. Attempt : ' + count);
mongoose.connect(config.mongo.uri,{useMongoClient:true});
mongoose.connection.on('error',(error)=>{
if (count >= 5){
console.log('Mongo ERROR');
console.error(error);
process.exit(1);
}
else{
setTimeout(handleDisconnect,1000);
}
});
mongoose.connection.on('open',()=>{
console.log('Connected to mongo at ' + Date.now());
});
}
我已经把代码的输出也贴出来了。我不明白尝试次数怎么会超过5次?还有内存泄漏警告和node:6804错误信息。我做错了什么?
Output of the code
2条答案
按热度按时间5rgfhyps1#
每次发出
error
事件时,都要为该事件附加一个事件侦听器。这会导致内存泄漏警告,并且还会使回调函数在每次事件发生时运行多次。不应在handleDisconnect()
函数内添加事件处理程序。示例:
mf98qq942#
当Mongoose失去与MongoDB服务器的连接时,您需要检查disconnected事件。此事件可能是由于您的代码显式关闭了连接、数据库服务器崩溃或网络连接问题。
错误事件:如果连接上发生错误(如由于格式错误的数据或负载大于16MB而导致的parseError),则发出此消息。
https://mongoosejs.com/docs/connections.html#connection-events