我正在使用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());
});
}
我也发布了代码的输出。我不明白尝试次数是多少?还有一个内存泄漏警告和node:6804错误消息。我做错了什么?
答案 0 :(得分:0)
每次发出事件时,都会为error
事件附加事件侦听器。这会导致内存泄漏警告,并且还会使每个事件发生的回调函数多次运行。您不应在handleDisconnect()
函数中添加事件处理程序。
示例:
function handleDisconnect(mongoError) {
// check error reason, increment counters, check if errors limit reached
}
mongoose.connection.on('error', handleDisconnect);