我正在制作RESTful API,但我遇到了一些麻烦。我想更新一行只包含已经传递的值。因此,使用相同的端点,用户只需编辑名称'这两个名称'和'键入'或者只是'类型'。
以下是我目前所拥有的内容:
Group.update({
created_by: req.user._id,
_id: req.params.group_id
}, {
name: req.body.name,
$addToSet: { users: req.body.users }
},
我想这样做,以便如果没有用户通过或没有通过名称,它仍然会更新另一个值。有人能指出我正确的方向吗?
谢谢, 丹尼尔
答案 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);
它不是最漂亮的方式,但它应该让你知道如何解决这个问题。