我有这个端点:
restaRouter.route('/lists/:id/')
.post(function(req, res) {
db.Restaurant.update({_id: req.params.id}, { $push: { reviews: req.body }}, function(err, doc) {
if (err) {
res.send(err);
}
res.json(doc);
})
});
当我发帖时,应该使用_id
找到这样的文档。 _id
是动态生成的:
{
"_id": "571616e420cac41111e90ecf",
"title": "Yep",
"address": "Somewhere",
"about": "Everything",
"reviews": [
{
"name": "My name",
"email": "email@gmail.com",
"message": "My message"
}
]
}
并将项目作为子文档推送到评论字段。
req.body
看起来像这样:
{
"name": "foo",
"email": "foo@bar.com",
"message": "myFoo bar"
}
我知道 json 对象是什么正在击中端点吗?是的。 console.log(req.body)
确认。
目前,当我发帖时,我得到的回复是
{
"ok": 1,
"nModified": 0,
"n": 0
}
当时没有任何修改。我究竟做错了什么?我怀疑这与此有什么关系,但我正在使用 mongojs
最佳答案
在您的查询中,您必须使用 {_id:ObjectId('myobectID')}
以你的例子为例:
db.Restaurant.update({_id: ObjectId(req.params.id)}, { $push: { reviews: req.body }}, function(err, doc) {
...
}
mongojs 特定
由于OP提到了mongojs
,所以上面的内容可以通过以下方式完成:
db.Restaurant.update({_id: mongojs.ObjectId(req.params.id)} ...
关于node.js - 更新子文档不起作用nodejs mongodb express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36720145/