2016-07-22 20 views
1

我正在測試Mongoose錯誤處理的情況,其中db命令(保存,更新等)無法執行時,數據庫連接丟失之前或執行期間db命令。在這個例子代碼:當db命令無法執行時,Mongoose不報告錯誤

var myModel = new MyModel(data); 
myModel.save(function (err, newDoc, numAffected) { 
    if (err || numAffected === 0) { 
     logger.error('Error inserting message: ' + err); 
    } 

    logger.info('Message inserted'); 
}) 

如果我把一個斷點上myModel.save()行,殺mongod的過程中,則繼續執行代碼,沒有任何反應和貓鼬似乎靜默失敗。回調是永遠不會被調用,並沒有什麼記錄在這裏或定義爲連接「錯誤」事件監聽器遵循app.js:

var db = mongoose.connection;  
db.on('error', function(e) { 
    logger.error('connection error:' + e); 
}); 

我本來期望一些錯誤信息,告訴我不能執行保存。任何意見我做錯了什麼?

我使用的是MongoDB 3.2,mongoose 4.5.1,express 4.14和node 4.2.1。

由於提前,

弗雷德

+0

您是否將[安全](http://mongoosejs.com/docs/guide.html#safe)選項傳遞給您的連接或模式?只是檢查,因爲默認應該是'真的' –

+0

我沒有明確地設置它,所以它使用默認值。 – fshort

回答

1

您的回調不會被調用,因爲如果直到貓鼬能夠連接沒有當save被調用時,操作排隊打開重新建立連接。

查看文檔here

相關問題