如果在mongodb准备好之前调用mongoose.connect(...),会收到错误Error: connect ECONNREFUSED
,没关系,但是在mongodb准备就绪后,mongoose不会重新连接,为什么?< / p>
为了处理这种情况,我调用mongoose.disconnect
并在回调函数中再次调用mongoose.connect(...),如:
connection = mongoose.connect(...).connection;
connection.on("error", function(err) {
setTimeout(function() {
mongoose.disconnect(function(){
connection = mongoose.connect(...).connection;
}, 5000);
});
此代码可以重新连接,但是当我启动mongodb时,mongodb接收的连接太多,所以我检查mongoose.disconnect
,它调用connection.close
,代码是
Connection.prototype.close = function (callback) {
var self = this;
this._closeCalled = true;
switch (this.readyState){
case 0: // disconnected
callback && callback();
break;
case 1: // connected
case 4: // unauthorized
this.readyState = STATES.disconnecting;
this.doClose(function(err){
在我的情况下,连接没有准备好,所以readyState
为0,所以它什么都不做,只是调用回调函数,这是否合理?
我该怎么办?
答案 0 :(得分:0)
嘿,看起来你需要在max-connection-idle-time中设置低值 因此开放的理想连接应该由mongodb自动关闭