【发布时间】:2016-09-09 21:26:55
【问题描述】:
如果在mongodb准备好之前调用mongoose.connect(...),会报错Error: connect ECONNREFUSED,没关系,但是在mongodb准备好之后,mongoose就不会重新连接,为什么?
为了处理这种情况,我调用 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,所以什么都不做,只是调用回调函数,合理吗?
我能做什么?
【问题讨论】: