更新子文档不工作nodejs mongodb express
我有这个端点:
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); }) });
当我做一个职位,它应该find这样的文件使用_id
。 _id
是dynamic生成的:
{ "_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)} ...