PATCH后如何保存mongoose数据?
How to save mongoose data after PATCH?
我的 Feathers.js 应用程序有一份调查问卷,我正在尝试保存每个输入的结果。这是我的客户端代码:
$.ajax({
url: "/answer",
type: "PATCH",
data: newAnswer,
success: function () {
console.log("Answer submitted!");
},
error: function () {
console.log("Error submitting answer.");
}
});
这是我的服务器端代码:
app.patch("/answer", (req, res) => {
users.patch(user[0]._id, req.body);
});
目前只保存最后一次输入。我做错了什么?
编辑:这是我的架构
answers: {
yourOrganization: {
page1: {
idOfParameterInClient: response
}
}
}
idOfParameterInClient
和 response
是动态的。在 page1
中,有许多 key/value 对。我该如何保留它们?
patch
不执行递归合并(MongoDB 也不会)。如果那是你要找的东西,你将不得不自己做,例如使用 deepmerge package:
const merge = require('deepmerge');
app.patch("/answer", (req, res) => {
const id = user[0]._id;
users.get(id).then(user => {
const mergedUser = merge(user.toObject(), req.body);
users.patch(id, mergedUser);
});
});
@Daff 让我走上正轨。最后,object-patch
允许我进行递归合并。这是我的代码:
const patch = require("object-patch");
app.patch("/answer", (req, res) => {
const id = user[0]._id;
users.get(id).then(user => {
patch(user, req.body);
users.update(user._id, user);
});
});
我的 Feathers.js 应用程序有一份调查问卷,我正在尝试保存每个输入的结果。这是我的客户端代码:
$.ajax({
url: "/answer",
type: "PATCH",
data: newAnswer,
success: function () {
console.log("Answer submitted!");
},
error: function () {
console.log("Error submitting answer.");
}
});
这是我的服务器端代码:
app.patch("/answer", (req, res) => {
users.patch(user[0]._id, req.body);
});
目前只保存最后一次输入。我做错了什么?
编辑:这是我的架构
answers: {
yourOrganization: {
page1: {
idOfParameterInClient: response
}
}
}
idOfParameterInClient
和 response
是动态的。在 page1
中,有许多 key/value 对。我该如何保留它们?
patch
不执行递归合并(MongoDB 也不会)。如果那是你要找的东西,你将不得不自己做,例如使用 deepmerge package:
const merge = require('deepmerge');
app.patch("/answer", (req, res) => {
const id = user[0]._id;
users.get(id).then(user => {
const mergedUser = merge(user.toObject(), req.body);
users.patch(id, mergedUser);
});
});
@Daff 让我走上正轨。最后,object-patch
允许我进行递归合并。这是我的代码:
const patch = require("object-patch");
app.patch("/answer", (req, res) => {
const id = user[0]._id;
users.get(id).then(user => {
patch(user, req.body);
users.update(user._id, user);
});
});