Ответ 1
После некоторых исследований и относительно новой темы я подумал, что было бы интересно поделиться своим опытом, отвечая на мой собственный вопрос:
В чем разница между использованием PouchDB и использованием CouchBase Lite с новым плагином LiteGap?
PouchDB может создать локальную базу данных (websql
или IndexedDB
) на устройстве и воспроизвести ее с помощью внешнего CouchDB. Также может использоваться как клиент для внешнего CouchDB.
Couchbase Lite создает на устройстве базу данных iOS/Android, доступную по умолчанию на http://localhost:5984
. Затем вы можете реплицировать локальную Couchbase Lite с помощью других внешних служб Couchbase/CouchDB. LiteGap позволяет создавать и использовать db Couchbase Lite в проекте PhoneGap.
Оба решения доступны для использования в проекте Phonegap.
Являются ли они двумя разными решениями для одной и той же проблемы?
Короче говоря, нет.
PouchDB является кросс-платформенным, поэтому вы можете использовать его в веб-проекте, а также в гибридном приложении. Также он предоставляет полезный API для непосредственного взаимодействия с локальным db или внешним CouchDB. Основываясь на технологиях websql/IndexedDB, у вас есть ограничения на хранение, которые требуют от пользователя разрешить больше локального пространства для хранения вашего веб-приложения.
Couchbase Lite - это родное решение для iOS/Android, которое устанавливает базу данных Couchbase на локальном устройстве устройства. Вместе с плагином LiteGap вы можете использовать его в проекте Phonegap.
Можно ли использовать API PouchDB для взаимодействия с локальной базой данных CouchBase Lite?
Да, но некоторые функции не работали, как ожидалось, в моих тестах.
Во-первых, у Couchbase Lite нет javascript HTTP API
, поэтому я решил использовать Pouch для того, чтобы действовать так же, как клиент. PouchDB может использовать внешние сервисы Couch, поэтому мы настраиваем Pouch для использования устройства Couchbase Lite на localhost:5984
.
Теперь с помощью Pouch вы можете create
создать базу данных, put()
или replicate
от локального до облака. Тем не менее, я обнаружил, что проблемы реплицируются из облака в локальные, используя метод Pouch replicate.from
. Одним из способов решения этой проблемы является установка двухсторонней репликации с использованием старого старого $.ajax
для отправки на устройство http://localhost:5984/_replicate
, как если бы вы использовали node curl
(передача данных объекта с помощью source
, target
, continous
и т.д.).
Я надеюсь, что это поможет кому-то принять решения о том, какие технологии используются при создании автономного/интерактивного гибридного приложения.