2016-11-14 78 views
12

我有一個運行在Node,express和MongoDB上的web應用程序。我使用貓鼬作爲ODM。當我用mongodb版本v3.0.1測試我的應用程序時,它運行良好並且不會引發錯誤。但是,當我運行相同的代碼v3.2.10我得到一段時間後的連接超時。連接使用貓鼬的mongodb的TImeout

我收到以下錯誤:

Error: connection timeout at null.<anonymous> (/webapp/node_module/mongoose/lib/drivers/node-mongodb-native/connection.js:186:17) 

我用mongoose.connect爲DB連接到本地MongoDB實例。 連接方式有什麼變化嗎?

+0

'null'的連接超時讓我懷疑正確的端口號沒有被傳遞給mongoose的connection.js模塊 - 你有沒有考慮過這個? – BenWS

+0

它連接罰款一段時間罰款。所以我認爲連接工作正常,但20-30分鐘後出現此錯誤。 – Dan

+0

@丹我有同樣的問題。如果你能解決它,讓我知道如何。 – slorenzo

回答

13

我前一陣發生了這個問題。這完全取決於您正在使用的版本mongoosemongodb-core。現在,你必須指定下列參數:

mongoose.connect("mongodb://user:[email protected]/db", { 
    server: { 
    socketOptions: { 
     socketTimeoutMS: 0, 
     connectionTimeout: 0 
    } 
    } 
}); 

然而,就在昨天,正確的參數,其中,

mongoose.connect("mongodb://user:[email protected]/db", { 
    server: { 
    socketOptions: { 
     socketTimeoutMS: 0, 
     connectTimeoutMS: 0 
    } 
    } 
}); 

我真的不知道該怎麼在再相信..

+0

也看到這個:https://github.com/christkv/mongodb-core/issues/153有一個問題,當在最新的mongodb-core中設置超時。 – DBellavista

+0

我也忽略了這個錯誤,但很高興知道這一點。 – Volem