1
我瘋了,試圖找出一種有效的方式來完成這樣一個簡單的任務與貓鼬。使用貓鼬更新來自請求主體的嵌入文檔
我有一個客戶和狗架構,狗嵌入在客戶文件。然後,我將一個更新的Dog對象放入服務器,並嘗試使用以下代碼更新匹配的嵌入對象。
Customer.findById(req.params.cust_id).exec(function(err, customer) {
if (err) return next(err);
var dog = customer.dogs.id(req.params.dog_id)
dog.update(req.body, function(err, dog) {
if (err) return next(err);
res.json({
message: 'Dog updated.'
});
});
});
這使我的錯誤「#UPDATE方法不適用於EmbeddedDocuments」。好,可以。因此,由於我無法調用update來將請求主體與要更新的文檔合併,因此使用請求主體(更新後的狗)高效地更新整個文檔(基本上是合併)的替代方法是什麼。
我不想輸出每個屬性來更新。
UPDATE:
通過NPM安裝lodash薩姆建議後,該解決方案爲我工作!
Customer.findById(req.params.cust_id).exec(function(err, customer) {
if (err) return next(err);
var dog = customer.dogs.id(req.params.dog_id)
_.merge(dog, req.body);
customer.save(function(err, customer) {
if (err) return next(err);
res.json({
message: 'Dog updated.'
});
});
});