仅更新输入的字段

Updating only inputted fields

我正在做 RESTful API 但我 运行 遇到了一些麻烦。我只想用已经传递的值更新一行。因此,对于相同的端点,用户可以仅编辑 'name'、'name' 和 'type' 或仅编辑 'type'.

这是我目前拥有的内容的片段:

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

我想这样做,如果没有用户通过或没有名称通过,它仍然会更新其他值。谁能给我指明正确的方向?

谢谢, 丹尼尔

您需要动态构建查询。

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);

这不是最好的方法,但它应该能让您了解如何解决这个问题。