Есть ли способ обновить идентификатор документа? Я пытался добиться этого с помощью следующего кода, но это вызывает ошибку (ниже):

this.db.get('oldId')
  .then(document => {
    this.logsheetDB.put({
      _id: 'newId',
      _rev: document._rev,
      objectToInsert,
    });
  })

Ошибка:

{"status":409,"name":"conflict","message":"Document update conflict"}"

Есть ли другой способ, кроме как воссоздать его (документ)?

Любая помощь оценили.

2
karruma 27 Июл 2017 в 19:39

1 ответ

Лучший ответ

Вы не можете изменить документ _id, это не имеет смысла.

Если вы получите документ и измените его id, вы создадите клон с другим id. Если вы хотите это сделать, вам просто нужно удалить _rev.

Зачем нужно удалять _rev при изменении _id? Обычно мы передаем свойство _rev, чтобы избежать конфликтов, и сообщаем CouchDB, что обновляемый нами документ основан на версии X. Изменяя _id, мы создаем новый документ, поэтому существующего документа для исправлять.

2
Kurt Schwanda 7 Янв 2019 в 20:33
1
NB: не забудьте удалить старый документ после его клонирования.
 – 
skiqh
28 Июл 2017 в 19:45