6

目标

cordova我想用/构建一个phonegap需要数据库(仅限客户端)的跨平台移动应用程序。我的目标平台主要是AndroidiOS. 我选择couchbase-lite了作为我的存储。

问题

但我找不到任何好的文档couchbase-litein phonegap。只有我在githubPlay Store中找到了一些rest api和一个应用程序 todo-lite

如果我没有任何服务器端实现,我无法理解如何获得可以发送POST/GET/PUT/DELETE请求的url 。

谁能建议我一种方法,我可以在本地使用/安装、连接和运行数据库中的 CRUD 操作couchbase-liteAndroidiOScordovaphonegap

为什么选择 Couchbase-lite(对所有人都不重要)

对于那些建议我选择另​​一个数据库的人,我只是分享我的发现......
cordova 5.0存储文档中有几个选择

  • LocalSorage: 5 MB 的限制对于应用程序来说是不够的。
  • WebSQL:我担心它的未来,因为 w3c 放弃了它的计划。
  • IndexDB:目前正在开发中,不适用于 Android 和 iOS。
  • 基于插件的选项:通过激励对 NoSQL 的评估。我试过了couchbase-lite。它具有对 Android 和 iOS 平台的插件支持。
4

6 回答 6

5

我也一直在寻找这个,我想我终于找到了一些东西。事实证明,您需要使用 coax 库与 Couchbase Lite db 进行通信。Couchbase Lite 插件只公开了一个 getURL 方法,它返回 Couchbase Lite 的本地内部 URL。然后您必须使用 coax 创建一个 db 对象并对其运行查询。

基本上,看起来对 Couchbaselite 的访问都是通过使用内部形成的 URL 的 REST 查询。但是这样做很痛苦,因此您需要使用同轴电缆。使用 coax 时,似乎 REST 操作被暴露为对象上的函数..put、del 等。此处列出的对 API 的完整引用是很好的细节:

这是移动设备上 Couchbase Lite 的 REST 操作的完整规范 - 您的 CRUD 操作

这是 Coax,其中包含有关其余查询如何在 CouchDB 上下文中工作的简单说明

我在这里找到了一篇非常好的文章——它讨论了设置和所有 CRUD 操作。

Coax 在科尔多瓦的 Couchase Lite

希望这可以帮助你...

于 2014-12-12T12:16:16.727 回答
4

另一个建议可能是 PouchDB 和 CouchDB。

您可以将您的 CouchDB 直接同步到 PouchDB,它足够聪明,可以使用设备上可用的任何存储,即 Localstorage、IDB、WebSQL。

如果您不想要完全复制,那么您可以构建一些中间件来控制从 CouchDB 复制到 PouchDB 的内容(您可以指定从哪个数据库复制哪些文档)

api 非常简单,文档都在网站上。

http://pouchdb.com/

于 2014-09-27T16:56:58.973 回答
2

您要查找的代码位于函数 setupConfig 中的 todo-lite phonegap 应用程序中。您将需要来自 todolite-phonegap 应用程序的 modules.js、zepto.min.js 和 zepto.touch.js 文件。

//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 )
        } )
    } )
}
于 2014-10-23T22:13:23.290 回答
2

您可以使用支持 iOS 和 Android 的Phonegap Cordova SQLite 插件

编码中没有语法差异,唯一的区别是

    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 设备中存储是无限的

于 2014-07-22T12:53:54.073 回答
1

我意识到这有点晚了,但你可以在 Couchbase 网站上找到一个很好的视频(你必须交出你的电子邮件等,但它相当轻松)。@LorinBeer 在大约 15 分钟内完成了在 phonegap 应用程序中设置本地数据存储的过程(几乎正好在 15:00 开始)。

使用 PhoneGap 和 Couchbase Lite 创建数据密集型应用程序

也有一个演示仓库 ANOTER

于 2014-09-27T04:43:37.150 回答
0

在您的问题中提到的应用程序 todo-lite链接中,它向您展示了如何使用 couch-DB 数据库。
他们提供了index.js文件的链接,其中包含 couch-db lite 的实现(操作方法)详细信息。
我想你可能错过了链接。您可以查看index.js文件以了解实现细节。

于 2014-07-22T14:02:47.487 回答