Последовательность/порядок репликации фильтров CouchBase Lite

У меня есть настройка фильтра на стороне сервера (javascript: function(doc, req)), которая проверяет тип документа и возвращает true или false для статуса репликации. У меня есть сценарий, в котором я должен проверить содержимое документа, скажем, DocumentA, чтобы решить, следует ли копировать DocumentB. Но нет последовательности, в которой doc передаются в javascript. например DocumentB может поступить на синхронизацию раньше DocumentA, на данный момент я не знаю что делать return без ведома DocumentA. Как я могу этого добиться?


person Nagesh    schedule 26.07.2016    source источник
comment
Где вы настраиваете этот серверный фильтр? Насколько мне известно, у шлюза синхронизации нет возможности писать собственные фильтры репликации на стороне сервера. Он поддерживает только sync_gateway/bychannel и _doc_ids. См. параметр фильтра здесь: developer.couchbase.com/documentation/mobile/current/develop/   -  person Mark Glasgow    schedule 28.07.2016
comment
Кроме того, Couchbase lite поддерживает только клиентские фильтры или идентификаторы каналов и документов. см.: developer.couchbase.com/documentation/mobile/current/develop/   -  person Mark Glasgow    schedule 28.07.2016
comment
Я использую фильтрованную репликацию, а не sync_gateway. Функции фильтров находятся в дизайн-документе   -  person Nagesh    schedule 28.07.2016
comment
Означает ли это, что вы копируете с Couchdb или чего-то еще, а не с дивана? У меня сложилось впечатление, что единственный способ воспроизвести Couchbase lite с помощью Couchbase — это sync_gateway.   -  person Mark Glasgow    schedule 29.07.2016
comment
Можете ли вы уточнить, в соответствии с вопросами @MarkGlasgow? Вы пометили это для Couchbase Lite и Sync Gateway. В документах четко указано, какие у вас есть варианты фильтрации при переходе с сервера CBL->SG->Couchbase. Речь идет не о том, что возможно только на стороне сервера, а о том, как это интегрируется с CBL.   -  person Hod    schedule 30.07.2016


Ответы (1)


Сначала о фильтрации. Вы можете фильтровать по каналу и идентификатору документа. Вот соответствующий раздел из документы (начиная с версии 1.2):

Репликации могут иметь фильтры, которые ограничивают, какие документы они будут передавать. Это может быть полезно для ограничения объема большой удаленной базы данных, загружаемой на устройство, или для сохранения конфиденциальности некоторых локальных документов. Специальный тип фильтра, используемый с Couchbase Sync Gateway, представляет собой набор каналов, с которых будет загружаться репликация по запросу. Также возможно ограничить репликацию явным набором идентификаторов документов.

Основываясь на вашем описании, одним из решений может быть настройка канала для определенного типа документа (ваш DocumentA), а другим — для других ваших документов. Затем используйте одноразовые репликации, чтобы гарантировать порядок.

person Hod    schedule 29.07.2016