Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 更新子文档不工作nodejs mongodb express_Node.js_Mongodb_Express - Fatal编程技术网

Node.js 更新子文档不工作nodejs mongodb express

Node.js 更新子文档不工作nodejs mongodb express,node.js,mongodb,express,Node.js,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); }

我有一个端点:

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);
        })
    });
当我发表文章时,应该使用
\u id
查找这样的文档。动态生成
\u id

{
  "_id": "571616e420cac41111e90ecf",
  "title": "Yep",
  "address": "Somewhere",
  "about": "Everything",
  "reviews": [
    {
      "name": "My name",
      "email": "email@gmail.com",
      "message": "My message"
    }
  ]
}
并将项目作为子文档推送到reviews字段

req.body
如下所示:

{
    "name": "foo",
    "email": "foo@bar.com",
    "message": "myFoo bar"
}
我是否知道json对象是命中端点的对象?对控制台日志(请求正文)确认

现在,当我发帖时,我得到的回复是

{
  "ok": 1,
  "nModified": 0,
  "n": 0
}

当时没有任何修改。我做错了什么?我怀疑这与此有关,但我使用的是mongojs,在您的查询中,您必须使用
{u 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)} ...

固定的。有点奇怪,我错过了。谢谢如果你能接受我的回答,我的名誉会很感激:)