如何在PATCH后保存猫鼬数据?

时间:2017-02-09 17:01:42

标签: mongodb express mongoose feathersjs

我的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
    }
  }
}

idOfParameterInClientresponse是动态的。在page1中,有许多键/值对。我该如何保留它们?

2 个答案:

答案 0 :(得分:0)

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);
  });

});

答案 1 :(得分:0)

@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);
  });
});