【发布时间】:2018-05-21 19:46:27
【问题描述】:
我目前正在构建一个 API,它使用 JSON 补丁规范使用 Mongoose ORM 对 MongoDB 进行部分更新。
我正在使用节点模块mongoose-json-patch 将补丁应用于我的文档,如下所示:
var patchUpdate = function(req, res){
var patches = req.body;
var id = req.params.id;
User.findById(id, function(err, user){
if(err){ res.send(err);}
user.patch(patches, function(err){
if(err){ res.send(err);}
user.save(function(err){
if(err) {res.send(err);}
else {res.send("Update(s) successful" + user);}
});
});
});
};
当我尝试使用 JSON 补丁语法删除或替换数组元素时,会出现主要问题:
var patches = [{"op":"replace", "path": "/interests/0", "value":"Working"}]
var user = {
name: "Chad",
interests: ["Walking", "Eating", "Driving"]
}
这应该将数组中的第一项(“Walking”)替换为新值(“Working”),但是我不知道如何验证实际被替换的内容。如果在应用补丁之前删除了另一个请求 /interests/0,则“Eating”将替换为“Working”而不是“Walking”,后者将不再存在于数组中。
我想确定,如果客户认为他正在编辑“Walking”,那么他会成功编辑它,或者至少会出错。
【问题讨论】:
-
你能解决这个问题吗?
标签: mongodb express mongoose json-patch