仅更新输入的字段
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);
这不是最好的方法,但它应该能让您了解如何解决这个问题。
我正在做 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);
这不是最好的方法,但它应该能让您了解如何解决这个问题。