В настоящее время я создаю API, который использует спецификацию исправления JSON для частичного обновления MongoDB с использованием ORM Mongoose.
Я использую модуль узла 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"]
}
Это должно заменить первый элемент в массиве («Прогулка») новым значением («Работа»), однако я не могу понять, как проверить, что на самом деле заменяется. Если другой запрос удалил /interests/0 до применения патча, «Еда» будет заменена на «Работа» вместо «Ходьба», которая больше не будет существовать в массиве.
Хотелось бы быть уверенным, что если клиент думает, что редактирует "Хождение", то он либо успешно редактирует, либо как минимум выдает ошибку.