0
我的MongoDB數據庫主文檔對象看起來是這樣的:更新子陣列與貓鼬不工作
{
"_id": {
"$oid": "568ad3db59b494d4284ac191"
},
"name": "Myclass",
"items": [
{
"name": "Conductive Gel",
"internal_id": "ID00067",
"description": "ECG Conductive Gel",
"short_description": "ECG Conduct. Gel",
"providers": [
{
"name": "one",
"address": ""
},
{
"name": "two",
"address": ""
}
]
},
{
}
]
}
確定的事情是,我收到一個AJAX PUT調用應該更新的項目之一(匹配一個_id)。
我的方法:
exports.updateItem = function(req, res, next) {
classes.findOne({_id: '568ad3db59b494d4284ac19d'}, function(e,myclass){
if(!e) {
myclass.items.forEach(function(item){
if (item._id == req.body._id) {
item = req.body;
myclass.save(function(err, doc){
if (err) return next(err);
return res.status(200).send('The item has been updated!');
});
}
});
} else {
res.status(500).send('Class not folund in BBDD!!');
}
});
};
的事情是,當我這樣做item = req.body;
的req.body信息沒有被映射到項目貓鼬對象,並在數據庫中的項目不會被更新。我也沒有得到任何錯誤。
我已經檢查過req.body和item兩者在我做item = req.body;
時有完全相同的字段。
如果我做item.name='whatever'
,另一方面,它的工作原理。
我一直在這個問題現在4小時戰鬥沒辦法解決......
我也試過貓鼬的findOneAndUpdate()查詢沒有成功..
您的解決方案的工作!另一方面,我在你最後的建議中嘗試瞭解決方案,但沒有奏效。 – Egidi