Моего MongoDB базы данные основного документа выглядит следующим образом:Обновления подмассива объекта с Mongoose не работает
{
"_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": ""
}
]
},
{
}
]
}
Ok дело в том, что Я получаю путы вызова Ajax, который следует обновить один из пунктов (тот, который соответствует _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 = req.body;
.
Если у меня есть item.name='whatever'
, с другой стороны, он работает.
Я боролся с этой проблемой в течение 4 часов теперь без решения ...
Я также попытался findOneAndUpdate Mongoose в() запрос без успеха ..
Ваше решение сработало! С другой стороны, я пробовал решение в вашей последней рекомендации и не работал. – Egidi