貓鼬文檔mention此示例代碼:Mongoose update()真的更新了什麼?
Tank.findById(id, function (err, tank) {
if (err) return handleError(err);
tank.size = 'large';
tank.save(function (err, updatedTank) {
if (err) return handleError(err);
res.send(updatedTank);
});
});
是否該結果到的MongoDB update()命令設置只是size
屬性(即db.tanks.update({_id: tank._id}, {$set: {size: "large"}});
)或這是否更換整個文件?
或者與其他詞,如果其他客戶端更新另一個屬性(比方說,color
)剛過findById()
的回報,但在執行前save()
之前?是color
然後恢復到以前的值或保持完好?
並且,在殼體貓鼬足夠聰明僅更新「改變」的屬性,究竟是(被比較的值之前/之後?或經由tank
對象上的設定器?)來檢測?無論如何坦克size
已經「大」了呢?
我問,因爲Mongoose docs不是對這個很清楚,我想了解如何貓鼬是設計和打算在這方面使用。
應該比較容易測試自己。 – robertklep
如果我沒有要測試的數據庫,則不需要。另外,測試並不能完全揭示圖書館應該做什麼。不好的測試會導致錯誤的假設。 –
我懷疑你會從Mongoose的開發者那裏得到一個關於什麼是_supposed_發生的明確答案,尤其是因爲文檔不是確定性的。普通用戶在這裏發佈的答案是軼事。 – robertklep