仅更新输入的字段

时间:2015-03-25 16:07:07

标签: node.js mongodb api rest express

我正在制作RESTful API,但我遇到了一些麻烦。我想更新一行只包含已经传递的值。因此,使用相同的端点,用户只需编辑名称'这两个名称'和'键入'或者只是'类型'。

以下是我目前所拥有的内容:

Group.update({
  created_by: req.user._id,
  _id: req.params.group_id
}, {
  name: req.body.name,
  $addToSet: { users: req.body.users }
},

我想这样做,以便如果没有用户通过或没有通过名称,它仍然会更新另一个值。有人能指出我正确的方向吗?

谢谢, 丹尼尔

1 个答案:

答案 0 :(得分:1)

您需要动态构建查询。

var find = {
      created_by: req.user._id,
      _id: req.params.group_id
}

var update = {};
if(req.body.name) {
    update.name = req.body.name;
}
if(req.body.users) {
    update['$addToSet'] = {};
    update['$addToSet'].users = req.body.users;
}

Group.update(find, update, callback);

它不是最漂亮的方式,但它应该让你知道如何解决这个问题。