3 回答

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊
這似乎意味著您的節(jié)點服務(wù)器與MongoDB實例的連接在嘗試寫入時已中斷。
看一下產(chǎn)生該錯誤的Mongo源代碼
Mongos.prototype.insert = function(ns, ops, options, callback) {
if(typeof options == 'function') callback = options, options = {};
if(this.s.state == DESTROYED) return callback(new MongoError(f('topology was destroyed')));
// Topology is not connected, save the call in the provided store to be
// Executed at some point when the handler deems it's reconnected
if(!this.isConnected() && this.s.disconnectHandler != null) {
callback = bindToCurrentDomain(callback);
return this.s.disconnectHandler.add('insert', ns, ops, options, callback);
}
executeWriteOperation(this.s, 'insert', ns, ops, options, callback);
}
這似乎與注釋中提到的Sails問題無關(guān),因為未安裝任何升級來加速崩潰或“修復(fù)”

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊
我知道Jason的答案已被接受,但是Mongoose遇到了同樣的問題,并且發(fā)現(xiàn)托管我的數(shù)據(jù)庫的服務(wù)建議應(yīng)用以下設(shè)置,以使Mongodb的連接在生產(chǎn)中保持活動狀態(tài):
var options = {
server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }
};
mongoose.connect(secrets.db, options);
我希望此回復(fù)可以幫助其他人遇到“拓?fù)湟驯黄茐摹卞e誤。

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊
此錯誤是由于mongo驅(qū)動程序出于任何原因斷開連接(例如,服務(wù)器已關(guān)閉)。
默認(rèn)情況下,貓鼬會嘗試重新連接30秒鐘,然后停止重試并永久拋出錯誤,直到重新啟動為止。
您可以通過在連接選項中編輯這兩個字段來更改此設(shè)置
mongoose.connect(uri,
{ server: {
// sets how many times to try reconnecting
reconnectTries: Number.MAX_VALUE,
// sets the delay between every retry (milliseconds)
reconnectInterval: 1000
}
}
);
- 3 回答
- 0 關(guān)注
- 1130 瀏覽