Как с помощью Couchbase Lite и Sync Gateway удалить документы из отозванных каналов?

Я разрабатываю приложение с Couchbase Lite на стороне клиента и Couchbase Sync Gateway на стороне сервера.

На стороне сервера я управляю документами о предоставлении доступа. Когда такой документ создается, пользователю, указанному в этом документе, предоставляется доступ к каналу. Очевидно, что при удалении такого документа разрешение на доступ аннулируется. Это действительно так, за исключением одного пункта.

Предположим, у меня есть один документ, опубликованный на канале, к которому моему пользователю предоставлен доступ. Затем удаляю документ. Согласно документации Couchbase, после удаления документа пользователь больше не имеет доступа к каналу, указанному в разрешении доступа.

К сожалению, документы, опубликованные в этом канале, уже синхронизированы с пользовательской базой данных couchbase lite. Отсюда мой вопрос: я хотел бы, чтобы документы, связанные с каналами, к которым у пользователя больше нет доступа, были удалены из couchbase lite. Но как я могу это сделать? Не похоже, что ни репликация, ни запросы lvie могут позволить это. Итак, есть ли особый механизм, который может позволить мне получать такое событие? Есть ли API, которого я еще не знаю?


person Riduidel    schedule 26.06.2017    source источник


Ответы (2)


Документы распределяются по каналам. Пользователям предоставляется доступ к каналам.

Если документ удаляется из канала, это событие синхронизируется с клиентом.

В настоящее время нет поддержки для уведомления клиента о том, что он потерял доступ к документу, потому что он потерял права на чтение из канала.

Это сложная проблема. Например, поскольку документ может быть назначен многим каналам, отмена доступа к каналу (или даже набору каналов) не означает, что клиент больше не имеет доступа к документу.

Чтобы увидеть два возможных подхода к решению этой проблемы, см. эту серию комментариев к проблеме GitHub .

person Hod    schedule 27.06.2017

Вы можете создать службу веб-перехватчика, которая может запускаться при удалении документа, и запускать его как службу Lambda или что-то в этом роде или на вашем собственном сервере приложений. Каждый раз, когда документ удаляется, вы можете удалить канал у пользователя sync_gateway. Документацию по webhook шлюза couchbase можно найти здесь: https://developer.couchbase.com/documentation/mobile/current/guides/sync-gateway/server-integration/index.html

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

person Sarvesh Chitko    schedule 10.07.2017
comment
Проблема с этим подходом заключается в том, что я хочу удалять документы на Couchbase Lite, а не на сервере Couchbase. - person Riduidel; 11.07.2017