我在更新ibm cloudant db中的文档时遇到问题

问题描述 投票:0回答:1

我想在现有文档中添加一个新对象。因此,我先获取过去的详细信息,然后将其放入insert语句中,但是当我只想要键值对时,它将作为对象数组存储。

router.post("/insertApprovers", (req, res) => {
  console.log("inside insertApprovers");

  let id = req.body.data.id;
  let approvers = JSON.parse(req.body.data.approv);
  db.find({ selector: { _id: id } }, async function(err, result) {
    if (err) return console.log(err.message);
    console.log("Find completed: " + JSON.stringify(result.docs));
    let restData = result.docs[0];
    await db.insert(
      {
        _id: id,
        restData,
        approvers: approvers,
        _rev: result.docs[0]._rev
      },
      function(err, data) {
        if (err) return console.log(err.message);
        console.log("Insert completed: " + data);
      }
    );
  });
});

该图显示了更新后如何存储我的数据:

enter image description here

node.js cloudant
1个回答
0
投票

这可能有效:

router.post("/insertApprovers", (req, res) => {
  console.log("inside insertApprovers");

  let id = req.body.data.id;
  let approvers = JSON.parse(req.body.data.approv);
  db.find({ selector: { _id: id } }, async function(err, result) {
    if (err) return console.log(err.message);
    console.log("Find completed: " + JSON.stringify(result.docs));
    let restData = result.docs[0];
    restData.approvers = approvers;
    await db.insert(restData),
      function(err, data) {
        if (err) return console.log(err.message);
        console.log("Insert completed: " + data);
      }
    );
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.