我正在使用猫鼬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错误消息。我究竟做错了什么?
每次发出事件时,都会为error
事件附加事件侦听器。这会导致内存泄漏警告,并且还会使每个事件发生的回调函数多次运行。你不应该在handleDisconnect()
函数中添加事件处理程序。
例:
function handleDisconnect(mongoError) {
// check error reason, increment counters, check if errors limit reached
}
mongoose.connection.on('error', handleDisconnect);