从phonegap中的couchbase lite中检索整个文档

时间:2016-09-16 10:48:59

标签: cordova couchbase-lite

我是couchbase lite的新手,我需要你的帮助。    我想在离线状态下存储数据和访问,并在phonegap应用程序中显示。所以我选择了couchbase lite。

使用示例代码执行某些步骤。有

  • 添加couchbase lite框架。
  • 在phonegap应用程序中运行它。
  • 获取本地couchbase lite URL。
  • 创建数据库。
  • 插入,更新和删除文档的数据库连接。

    但我的问题是从数据库中检索整个文档。 同时我读了map方法来检索文档。但我无法理解。

    示例Phonegap应用:Here the link

    下面我附上了工作代码,在ios平台上测试

     var coax = require("coax");
     console.log(coax);
     var appDbName = "couchdb";
     document.addEventListener('deviceready', onDeviceReady, false);
    
    // deviceready Event Handler
    //
    // The scope of 'this' is the event. In order to call the 'receivedEvent'
    // function, we must explicitly call 'app.receivedEvent(...);'
    
    function onDeviceReady() {
    receivedEvent('deviceready');
    setupConfig(function(err){
                if (err) {
                alert(err)
                return console.log("err "+JSON.stringify(err))
                }
                });
    
    }
    
    function logMessage(message) {
    var p = document.createElement("p");
    p.innerHTML = message;
    document.body.getElementsByClassName('app')[0].appendChild(p);
    console.log(message);
    }
    
     // Update DOM on a Received Event
    
    function receivedEvent(id) {
    var parentElement = document.getElementById(id);
    var listeningElement = parentElement.querySelector('.listening');
    var receivedElement = parentElement.querySelector('.received');
    
    listeningElement.setAttribute('style', 'display:none;');
    receivedElement.setAttribute('style', 'display:block;');
    
    console.log('Received Event: ' + id);
    }
    
    
    
    function setupConfig(done) {
    // get CBL url
    if (!window.cblite) {
        return done('Couchbase Lite not installed')
    }
    cblite.getURL(function(err, url) {
                  console.log("getURL: " + JSON.stringify([err, url]));
    
                  window.server = coax(url);
    
                  var db = coax([url, appDbName]);
    
                  setupDb(db, function(err, info){
                          console.log("getDB"+db);
    
                          if (err) {
                          return alert( JSON.stringify("GetDB:"+ err ) );
                          }
    
                          db.get("_local/user", function(err, doc) {
                            if (err) {
    
                                if( err.status == 404 ) {
    
    
                                var docV = { "key" : "value" };
                                db.put( "_local/user", docV, function( err, ok ) {
                                //HERE I AM INSERT THE DATA
                                return alert( JSON.stringify("Success:" + ok ) );
                                } );
    
    
                                }
                                else {
                                return alert( JSON.stringify( err ) );
                                }
    
                            }
                            else {
                                console.log("Document : "+doc._id);
                                // HERE I AM UPDATE AND DELETE THE DATA
                                doc._deleted =true;
                                db.put("_local/user", doc, function(error, ok) {
    
                                });
    
    
                                }
    
                          });
    
    
                          });
    
                  });
    
    }
    
      function setupDb(db, cb) {
            db.get(function(err, res, body){
             console.log(JSON.stringify(["before create db put", err, res, body]))
             db.put(function(err, res, body){
                  db.get(cb);
                  })
             })
     }
    

1 个答案:

答案 0 :(得分:0)

您将文档作为JS var传入。这是一个显示此内容的小片段(来自您链接的示例应用):

function toggleChecked(id) {
    log("toggle", id)
    config.db.get(id, function(err, doc){
        doc.checked = !doc.checked
        doc.updated_at = new Date()
        config.db.put(id, doc, function(){})
    })
}

doc中的属性可以直接使用和更新。