У меня проблемы с обновлением моего документа в IBM Cloudant DB - PullRequest
0 голосов
/ 23 октября 2019

Я хочу добавить новый объект в мой существующий документ. Поэтому я сначала извлекаю прошлые данные и помещаю их в оператор вставки, но он сохраняется как массив объектов, когда мне нужны только пары ключ-значение.

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

1 Ответ

0 голосов
/ 23 октября 2019

Это может работать:

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