CouchDB как база данных Cordova/Phonegap

Цель

Я хочу создать кроссплатформенное мобильное приложение с cordova/phonegap, для которого требуется база данных (только на стороне клиента). Моя целевая платформа в основном Android и iOS. В качестве хранилища я выбрал couchbase-lite.

Проблема

Но я не смог найти хорошей документации для couchbase-lite в phonegap. Только я нашел несколько rest api и приложение todo-lite в github и Play Маркет.

Я не мог понять, если у меня нет какой-либо реализации на стороне сервера, как я могу получить url, по которому я могу отправить запрос POST/GET/PUT/DELETE.

Может ли кто-нибудь предложить мне способ, с помощью которого я могу установить, подключить и запустить операцию CRUD в базе данных couchbase-lite локально в Android и iOS, используя cordova/phonegap.

Почему Couchbase-lite (не важно для всех)

Для тех, кто предложит мне выбрать другую базу данных, я просто делюсь своими выводами...
From документация по хранилищу Cordova 5.0 есть несколько вариантов

  • LocalSorage: ограничение в 5 МБ недостаточно для приложения.
  • WebSQL: я опасаюсь за его будущее, поскольку w3c отказался от планирования.
  • IndexDB: в настоящее время находится в стадии разработки и недоступен для Android и iOS.
  • Варианты на основе подключаемых модулей: путем мотивации оценки NoSQL. Я пробовал couchbase-lite. У которого есть поддержка плагинов для платформы Android и iOS.

person Nafeez Abrar    schedule 22.07.2014    source источник
comment
Документацию Couchbase Lite очень трудно найти, и документация не очень хорошая. Кроме того, было очень трудно получить ответы на форумах или в IRC. До сих пор работать с ними было довольно неприятно - я предполагаю, что большая часть их ресурсов предназначена только для платных клиентов, к сожалению.   -  person Eno    schedule 11.12.2014


Ответы (6)


Я тоже искал это, и я думаю, что наконец-то нашел что-то. Оказывается, вам нужно использовать коаксиальную библиотеку для связи с Couchbase Lite db. Плагин Couchbase Lite предоставляет только один метод getURL, который возвращает ЛОКАЛЬНЫЙ внутренний URL-адрес для Couchbase Lite. Затем вам нужно использовать коаксиальный кабель для создания объекта db и выполнения запросов к нему.

По сути, похоже, что доступ к Couchbaselite осуществляется через запросы REST с использованием внутреннего URL-адреса. Но это больно, поэтому вам нужно использовать коаксиальный кабель. С коаксиальным кабелем кажется, что операции REST выставляются как функции для объектов... put, del и т. д. Полная ссылка на API приведена здесь, это хорошая деталь:

Вот полная спецификация операций REST для Couchbase Lite на мобильных устройствах. CRUD-операции

Вот Coax с простыми инструкциями о том, как остальные запросы работают в контексте CouchDB

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

Couchase Lite в Кордове через коаксиальный кабель

Надеюсь, это поможет вам...

person Moonwalker    schedule 12.12.2014

Альтернативным предложением могут быть PouchDB и CouchDB.

Вы можете синхронизировать CouchDB напрямую с PouchDB, и он достаточно умен, чтобы использовать любое хранилище, доступное на устройстве, то есть Localstorage, IDB, WebSQL.

Если вам не нужна полная репликация, вы можете создать промежуточное программное обеспечение для управления тем, что реплицируется в PouchDB из CouchDB (вы можете указать, какие документы из какой базы данных реплицируются)

API довольно прост, и вся документация есть на веб-сайте.

http://pouchdb.com/

person jdelibas    schedule 27.09.2014

Вы можете использовать плагин Phonegap Cordova SQLite с поддержкой iOS и Android.

Нет синтаксических различий в кодировании, разница только в том, что

    db = window.openDatabase("DBNAME", "1.0", "Description", 200000); // WebSQL

    db = window.sqlitePlugin.openDatabase("DBNAME", "1.0", "Description", 200000); // SQLite Plugin
    db.transaction(function(tx){
    tx.executeSql("CREATE TABLE demo(id INTEGER,name TEXT)");
    });

Хранилище не ограничено в новой версии устройств Android/iOS

person Manjesh V    schedule 22.07.2014
comment
Я уже исследовал это. Это фактически удовлетворяет мою/вопросную потребность, за исключением того, что в настоящее время плагин нестабилен см. справку. Вот почему я не упомянул это в своих выводах. - person Nafeez Abrar; 22.07.2014

Код, который вы ищете, находится в приложении todo-lite phonegap в функции setupConfig. вам понадобятся файлы modules.js, zepto.min.js и zepto.touch.js из приложения todolite-phonegap.

//check if couchbase lite plugin is installed
if (!window.cblite) { return alert( 'Couchbase Lite not installed' ) }

//get your local url from the plugin
cblite.getURL( function(err, url) {
    console.log( "getURL: " + JSON.stringify( [ err, url ] ) )
    if (err) { return alert( JSON.stringfiy( err ) ) }

    var xmlHttp = new XMLHttpRequest()
    xmlHttp.open( 'GET', url, false )
    xmlHttp.send( null )

    window.server = coax( url );

    var db = coax( [ url, appDbName ] );

    setupDb( db, function(err, info) {
        if (err) { return alert( JSON.stringify( err ) ) } 

        // now your db connection is setup you do CRUD operations by

        //GET
        db.get( "myDocumentID", function (error, doc) { 
            if( error ) {
                if( error.status == 404 ) {
                    //INSERT
                    var myDocument = { "key" : "value" };
                    db.put( "myDocumentID", myDocument, function( error, ok ) {
                        if (error) { return alert( JSON.stringify( error ) }
                        //success
                    } );
                } else { return alert(JSON.stringify( error) ) }
            } else {
                //UPDATE
                doc.my_key = "value";
                //DELETE
                doc._deleted = true;
                db.put("myDocumentID", doc, function(error, ok) {
                     if (error) { return alert( JSON.stringify( error ) }
                     //success
                } );
            }
        } );
    } );
} );

function setupDb(db, cb) {
    db.get( function(err, res, body) {
        db.put( function(err, res, body) {
            db.get( cb )
        } )
    } )
}
person deefactorial    schedule 23.10.2014

Я понимаю, что это немного поздно, но вы можете найти хорошее видео на сайте Couchbase (вам придется передать свою электронную почту и т. д., но это довольно безболезненно). @LorinBeer настраивает локальное хранилище данных в приложении телефонной связи примерно за 15 минут (начинается почти ровно в 15:00).

Использование PhoneGap и Couchbase Lite для создания приложений, интенсивно использующих данные

Также есть демо-репозиторий, ANOTER.

person linkingarts    schedule 27.09.2014

По ссылке упоминается приложение todo-lite в вашем вопросе, он показывает, как использовать базу данных Couch-DB.
Они предоставили ссылку на index.js, который содержит сведения о реализации (инструкции) Couch-DB lite.
Я думаю, вы может пропустил ссылку. Детали реализации можно посмотреть в файле index.js.

person frank    schedule 22.07.2014
comment
Я немного изучил проект, но я ищу / прошу какой-нибудь наглядный пример установки, подключения к базе данных и операции CRUD локально в Android и iOS с использованием cordova/phonegap. Подобно этой установите, connect и CRUD Операция. - person Nafeez Abrar; 22.07.2014