Couchdb получает измененный документ с каждым уведомлением об изменении

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

что-то вроде этого:

http://localhost:5058/db-name/_chnages/_view/inserted-document

И мне нравится, что ответ будет примерно таким:

{
   "id":"0552065465",
   "name":"james"
   .
   .
   .
}

Повторное подключение к базе данных для предоставления фактического документа каждым уведомлением может вызвать проблемы с производительностью.

Могу ли я определить представление, которое возвращает фактический документ при каждом изменении?

1 ответ

Решение

Есть 3 возможных способа определить, был ли документ только что добавлен:

  1. Вы добавляете поле статуса в ваш документ с определенным статусом для новых документов.
  2. Если ревизия начинается с 1- но это не на 100% точно, если вы делаете репликацию.
  3. В ответе на изменения проверьте, равен ли номер редакции документа единице. Если это так, это означает, что он был только что добавлен (лучшее решение IMO)

Если вы хотите запросить конечную точку _changes и напрямую получить вновь вставленные документы, вы можете использовать подход #1 и использовать функцию фильтра, которая возвращает только документы со статусом = "новый".

В противном случае вам следует использовать подход № 3 и локально фильтровать ответы _changes. Например: ваше приложение получит все изменения и будет обрабатывать только документы с количеством ревизий, равным 1.

И, как вы упомянули, вы хотите получить документ, а не только _id и _rev. Для этого вы можете просто добавить параметр запроса: include_docs=true

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