我是couchbase lite的新手,我需要你的帮助。 我想在离线状态下存储数据和访问,并在phonegap应用程序中显示。所以我选择了couchbase lite。
使用示例代码执行某些步骤。有
插入,更新和删除文档的数据库连接。
但我的问题是从数据库中检索整个文档。 同时我读了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);
})
})
}
答案 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中的属性可以直接使用和更新。