无法使用RESTful api put更新mongo数组

时间:2015-05-06 17:55:18

标签: javascript angularjs node.js mongodb express

我是MEAN堆栈的新手,最近完成了一个教程,并一直在努力进一步开发它。这是一个使用RESTful api更新mongo db的简单应用程序。现在我使用put语句更新我的集合中文档的某些部分。唯一的问题是当我尝试使用此put语句更新数组时,我得到500错误。这是我在 Server.js 文件中的put语句:

app.put('/users/:id', function (req, res) {
      var id = req.params.id;
      console.log(req.body.name);
      db.users.findAndModify({
        query: {_id: mongojs.ObjectId(id)},
        update: {$set: {name: req.body.help.name, email: req.body.email, number:                    req.body.number}},
        new: true}, function (err, doc) {
      res.json(doc);
    }    
  );
});

如果您发现body.emailbody.number更新语句效果很好。但是我尝试制作一个非常简单的数组来测试该主题。在我的一个用户文档中,我有这个数组。

"help" : [ 
        {
            "name" : "test"
        }
    ],

我想做的就是弄清楚如何更改数组中的值。 put语句非常适合更改mongo文档中的字符串而不是数组。我注意到req.body.string是你访问它的方式所以我想我要做的就是添加它,所以在这种情况下req.body.help.name。但是这不起作用,我得到的是我的控制台日志中的500错误。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

所以答案结果是我没有将我的$ set中的数组包含在findandmodify的更新部分中。以下是代码中应该是这样的:      更新:{$ set:{help:{name:req.body.help.name}}}