Фильтровать удаленные коллекции в Couchbase Views
Как я могу написать условие в представлениях Couchbase, чтобы отфильтровать удаленную коллекцию из результата.
function (doc, meta) {
if(doc.type=='folder'){
emit(doc.folder_id, doc);
}
}
Вот мой простой вид, он дает некоторые удаленные папки в ответе json.
1 ответ
Имейте в виду, что взгляды только в конечном итоге последовательны. Они не возвращают данные в реальном времени. Представлениям может потребоваться некоторое время, чтобы отобразить данные в CB.
В частности, удаление удаленных элементов из результатов просмотра CB занимает до минуты. Это несколько настраивается.
Важно: не создавайте "doc" в ваших представлениях - это расточительно (поскольку в CB хранится еще одна копия каждого документа).
Вместо этого вы обычно можете запросить, чтобы документ был присоединен к результату (в python он называется "include_doc" - http://pythonhosted.org/couchbase/api/views.html). Это может помочь вам решить проблему: если вы запросите, чтобы документы были включены в результаты просмотра, то если документ был удален, он просто не вернет его, сообщив, что он уже удален.
- В качестве альтернативы, если у вас нет "include_doc" в вашем клиенте, вы можете сделать это вручную: получить результаты просмотра (только список идентификаторов документов) и для каждого документа выполнить "get" для извлечения данных. Если вы не можете найти документ, он был удален. (в отличие от представлений действия "get" полностью согласованы - они отражают данные, записанные на диск).