处理Mongoose断开连接

问题描述 投票:0回答:1

我正在使用猫鼬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

node.js mongoose
1个回答
0
投票

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

例:

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

mongoose.connection.on('error', handleDisconnect);
© www.soinside.com 2019 - 2024. All rights reserved.