Я работаю над проектом, который использует Couchbase Server и Sync Gateway для синхронизации содержимого ведра с клиентами iOS и Android, работающими с Couchbase Lite. Мне также нужен доступ на чтение и запись к серверу Couchbase от серверного приложения Node.js. Из исследования, которое я сделал, использование shadowing нахмурилось (https://github.com/couchbase/sync_gateway/wiki/Bucket-Shadowing), что заставило меня заглянуть в интерфейс Sync Gateway API как средство для обновления ведра из приложения Node.js. Для обновления существующих документов через API Sync Gateway требуется самый последний идентификатор версии документа, который должен быть передан, требуя отдельного чтения перед модификацией (http://mobile-couchbase.narkive.com/HT2kvBP0/cblite-sync-gateway-couchbase-server), что кажется потенциально неэффективным. Каков наилучший способ решить эту проблему?Couchbase Sync Gateway - серверный и клиентский API против затенения ковша
ответ
Я не уверен, почему ваш вопрос был опущен, так как это кажется разумным вопросом. Вы правы, ведро Couchbase, которое используется Sync Gateway, должно, пожалуй, лучше всего воспринимать как «непрозрачное», вы не должны ковыряться там и меняться. Существует ряд реализаций Couchbase Lite, например, для Java, .NET и Mac OS X. Рассматривали ли вы создание веб-службы, которая с одной стороны обслуживает ваше приложение, а с другой стороны сама по себе является Клиент Couchbase Lite? Вы должны иметь возможность разделить ваши данные по мере необходимости с помощью каналов.
Для обновления документа (который действительно создает новую редакцию) требуется идентификатор ревизии. В противном случае Couchbase не может связать обновление с родителем. Это нарушает весь подход к разрешению конфликтов. (Couchbase использует метод, известный как многоуровневое управление параллелизмом.)
Ожидается, что вы обновляете существующее содержимое документа. Это означает, что вы уже прочитали документ, включая идентификатор ревизии.
Если по какой-то причине вам не нужно старое содержимое для обновления документа, вам все равно нужен идентификатор ревизии. Если вы обходите это (например, очищая документ через Sync Gateway, а затем нажав свою новую версию), вы можете получить две версии документа в системе без соединения, что вызовет особый конфликт.
Так что короткий ответ - нет, нет способа избежать этого (не вызывая других головных болей).
- 1. Couchbase Sync Gateway
- 2. Couchbase Sync Gateway Клиент и серверная сторона
- 3. Couchbase Sync gateway на Windows
- 4. Validate Couchbase Sync Gateway Credentials от Android
- 5. Couchbase Sync Gateway User Password Reset
- 6. Как Couchbase Sync Gateway получает изменения Couchbase Server?
- 7. Couchbase sync gateway buckets and database
- 8. Ошибка при установке Couchbase Sync Gateway
- 9. Создайте нового пользователя внутри sync-функции couchbase-sync-gateway?
- 10. Реализовать присутствие с помощью Pouchdb и Couchbase (w. Sync Gateway)
- 11. Синхронизация PouchDB и Couchbase Sync Gateway - ошибка CORS
- 12. Couch Sync Gateway с OrientDB
- 13. Не удается создать пользователя в Couchbase Sync Gateway
- 14. Couchbase Sync Gateway: несколько кодов для базы данных
- 15. Можно ли связать Couchbase Gateway Sync с сервером Cloudant?
- 16. couchbase lite xamarin pull replication with sync-gateway
- 17. Couchbase REST API против CLI
- 18. Query sync gateway buckets с использованием N1QL
- 19. Невозможно создать сеанс с помощью CouchBase sync gateway admin REST API
- 20. Документ Upsert, который поставляется через Couchbase sync gateway Webhook в API
- 21. Как синхронизировать серверный и клиентский код?
- 22. asp.net button click клиентский и серверный код
- 23. Errai - отдельный клиентский и серверный код
- 24. Добавление нового ковша Couchbase вызвало ошибку BucketNotFound
- 25. Клиентский магазин couchbase возвращает false
- 26. Получение данных из ковша couchbase с переменной
- 27. Где я могу найти четкие определения для кластера Couchbase, узла Couchbase и ковша Couchbase?
- 28. Couchbase-lite и CouchDB
- 29. Сортировка ковша против быстрой сортировки
- 30. Лучший серверный/клиентский протокол, поддерживаемый Python?