我有这个终点:
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
答案 0 :(得分:3)
在您的查询中,您必须使用{_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)} ...