2016-05-13 46 views
1

如果在mongodb准备好之前调用mongoose.connect(...),将会得到错误Error: connect ECONNREFUSED,这没关系,但在mongodb准备好之后,猫鼬不会重新连接,为什么?如何通过mongoosejs连接到mongodb时处理错误

来处理这种情况,我称之为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,所以它什么都不做,只是调用回调功能,这是合理的竹叶提取?

我该怎么办?

回答