2016-05-13 112 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,所以它什麼都不做,只是調用回調功能,這是合理的竹葉提取?

我該怎麼辦?

回答