Couchdb получает измененный документ с каждым уведомлением об изменении
Я вполне уверен, что я хочу получать уведомления с вставленным документом при каждой вставке в диване базы данных.
что-то вроде этого:
http://localhost:5058/db-name/_chnages/_view/inserted-document
И мне нравится, что ответ будет примерно таким:
{
"id":"0552065465",
"name":"james"
.
.
.
}
Повторное подключение к базе данных для предоставления фактического документа каждым уведомлением может вызвать проблемы с производительностью.
Могу ли я определить представление, которое возвращает фактический документ при каждом изменении?
1 ответ
Есть 3 возможных способа определить, был ли документ только что добавлен:
- Вы добавляете поле статуса в ваш документ с определенным статусом для новых документов.
- Если ревизия начинается с
1-
но это не на 100% точно, если вы делаете репликацию. - В ответе на изменения проверьте, равен ли номер редакции документа единице. Если это так, это означает, что он был только что добавлен (лучшее решение IMO)
Если вы хотите запросить конечную точку _changes и напрямую получить вновь вставленные документы, вы можете использовать подход #1 и использовать функцию фильтра, которая возвращает только документы со статусом = "новый".
В противном случае вам следует использовать подход № 3 и локально фильтровать ответы _changes. Например: ваше приложение получит все изменения и будет обрабатывать только документы с количеством ревизий, равным 1.
И, как вы упомянули, вы хотите получить документ, а не только _id и _rev. Для этого вы можете просто добавить параметр запроса: include_docs=true