Обновление документа CouchDB в нано
Мне нужно получить документ, изменить / вставить / удалить некоторые поля и положить его обратно.
Действие "положить" требует текущей версии документа, но в nano я не могу найти функцию, которая принимает версию в качестве параметра и вставляет документ обратно в базу данных.
Как я могу сделать это с нано?
1 ответ
Примечание: это общий алгоритм, он не специфичен для любой библиотеки, так как nano insert()
Метод не предлагает ничего автоматизированного для обновления документов.
Получите документ, сохраните текущую редакцию, примените изменения и попробуйте отправить документ с сохраненным номером редакции.
Обязательно обработайте возможные 409 конфликтных ответов, которые произошли, когда документ был изменен между тем.
В этом случае вам следует повторно загрузить документ, сохранить номер редакции, повторно применить изменения и затем попытаться отправить его снова с новой редакцией.
Итак, вот алгоритм:
- Получить документ
- Сохранить _rev
- Применять изменения
- Попробуйте отправить обновленный документ с сохраненным _rev
- Переходите к шагу 1 в случае 409
За дополнительной информацией по этому вопросу обращайтесь к разделу PUT API-документа CouchDB и вики-странице CouchDB Replication and Conflicts. Вы также можете найти Как обновить документ с помощью Nano (клиент CouchDB для Node.js).