Удаление документа с помощью PHP API не синхронизируется со шлюзом Couchbase

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

$myCluster = new CouchbaseCluster('couchbase://127.0.0.1');
$myBucket = $myCluster->openBucket($bucketName);
$query = CouchbaseViewQuery::from('dev_view', 'old_docs');
$res = $myBucket->query($query);
foreach ($res['rows'] as $doc)
$res = $myBucket->remove($doc['key']);

Все документы из представления удаляются с сервера Couchbase, но Couchbase не уведомляет Sync Gateway об их удалении с устройств. Когда я запускаю приложение на любом устройстве (планшетах Android), документы начинают синхронизироваться с сервером Couchbase, а не удаляются с устройства.
Но когда я удаляю документ с устройства, Sync Gateway уведомляет сервер CB, и документ также удаляется с сервера CB.

Есть ли ошибка с PHP SDK? Должен ли я вызвать функцию для уведомления Sync Gateway после удаления документов?

1

Решение

Есть два возможных способа использования Couchbase здесь.

Один из них, если вы говорите с ведром за Sync Gateway напрямую. Если вы делаете это, это не предполагаемый способ использования Couchbase, а непосредственное удаление документов не поддерживается.

Другой возможный способ, если вы используете функция «теневые вёдра». Если вы делаете это, то это звучит так, как будто это может быть проблема, которая должна быть подана.

В качестве обходного пути вам может понадобиться использовать свое представление для определения «старых документов», а не удалять их через интерфейс SDK, попробуйте удалить их через Sync Gatway REST API.

1

Другие решения

Создайте представление для теневого сегмента и удалите документы из теневого сегмента. Удаления в теневом сегменте реплицируются в синхронизирующий сегмент с добавленными метаданными (например, _deleted = true), необходимыми для синхронизации / репликации. Теперь любые удаления, сделанные в теневом сегменте, будут уведомляться / копироваться на мобильные устройства.

0

По вопросам рекламы [email protected]