处理Mongoose Disconnect

时间:2017-12-24 11:10:50

标签: node.js mongoose

我正在使用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错误消息。我做错了什么?

Output of the code

1 个答案:

答案 0 :(得分:0)

每次发出事件时,都会为error事件附加事件侦听器。这会导致内存泄漏警告,并且还会使每个事件发生的回调函数多次运行。您不应在handleDisconnect()函数中添加事件处理程序。

示例:

function handleDisconnect(mongoError) {
  // check error reason, increment counters, check if errors limit reached
}

mongoose.connection.on('error', handleDisconnect);