【发布时间】:2016-05-04 23:11:10
【问题描述】:
我的 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 信息没有映射到项目 mongoose 对象中,并且数据库中的项目没有更新。我也没有收到任何错误。
在我执行 item = req.body; 的那一刻,我检查了 req.body 和 item 都具有完全相同的字段。
另一方面,如果我这样做 item.name='whatever' ,它会起作用。
我已经与这个问题斗争了 4 个小时,但没有解决方案......
我也尝试过 Mongoose 的 findOneAndUpdate() 查询,但没有成功。
【问题讨论】:
标签: javascript node.js mongoose