Я использую PHP SDK для получения документов из проектного представления и удаления их.Удаление документа с помощью PHP API не синхронизируется с шлюзом синхронизации Couchbase
$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 не уведомляет синхронизации шлюз, чтобы удалить их с устройства. Когда я запускаю приложение на любом устройстве (планшеты Android), документы начинают синхронизироваться с сервером Couchbase вместо того, чтобы удаляться с устройства. Но когда я удаляю документ с устройства, Sync Gateway уведомляет сервер CB, и документ также удаляется с сервера CB.
Есть ли ошибка с PHP SDK? Должен ли я вызвать функцию уведомления шлюза синхронизации после удаления документов?
Я разговариваю с ведром напрямую, и это потому, что в моем проекте должны быть как приложения, так и веб-клиенты. Для клиента приложения я использую CB Lite и, следовательно, разговариваю с шлюзом синхронизации. Но для веб-клиента я напрямую разговариваю с ведром. Если это не так, то для чего нужен PHP SDK? – Hadu
Большинство развертываний Couchbase используют SDK, которые напрямую общаются с ведрами, но это недействительное развертывание, если вы используете Couchbase Mobile Sync Gateway из-за некоторых конкретных потребностей в таком развертывании. Это то, что команда смотрит прямо сейчас. (обратите внимание: я из Couchbase, Inc.) –
Итак, вы говорите, что я никогда не должен напрямую разговаривать с сервером CB, и я должен всегда использовать API-интерфейс REST Sync Gateway? – Hadu