Обновление документа CouchDB в нано

Мне нужно получить документ, изменить / вставить / удалить некоторые поля и положить его обратно.

Действие "положить" требует текущей версии документа, но в nano я не могу найти функцию, которая принимает версию в качестве параметра и вставляет документ обратно в базу данных.

Как я могу сделать это с нано?

1 ответ

Решение

Примечание: это общий алгоритм, он не специфичен для любой библиотеки, так как nano insert() Метод не предлагает ничего автоматизированного для обновления документов.

Получите документ, сохраните текущую редакцию, примените изменения и попробуйте отправить документ с сохраненным номером редакции.

Обязательно обработайте возможные 409 конфликтных ответов, которые произошли, когда документ был изменен между тем.

В этом случае вам следует повторно загрузить документ, сохранить номер редакции, повторно применить изменения и затем попытаться отправить его снова с новой редакцией.

Итак, вот алгоритм:

  1. Получить документ
  2. Сохранить _rev
  3. Применять изменения
  4. Попробуйте отправить обновленный документ с сохраненным _rev
  5. Переходите к шагу 1 в случае 409

За дополнительной информацией по этому вопросу обращайтесь к разделу PUT API-документа CouchDB и вики-странице CouchDB Replication and Conflicts. Вы также можете найти Как обновить документ с помощью Nano (клиент CouchDB для Node.js).

Другие вопросы по тегам