我昨天开始使用PouchDB进行开发,我遇到了一些问题。如果我尝试更新项目,而不是更新现有项目,则会创建新项目。
我的代码就是这个
服务
.service('LocalDB', function($q){
var db = null;
this.initDB = function(){
db = new PouchDB('tutorial', {adapter: 'websql'});
}
this.addObject = function(object){
return $q.when(db.put(object));
}
this.updateObject = function(object, params){
params._id = object._id;
params._rev = object._rev;
return $q.when(db.put(params));
}
})
控制器代码
.controller('MainCtrl', function ($scope, LocalDB, LoginService){
//LoginService.user have many parameters
function initDB(){
LocalDB.initDB();
}
initDB();
$scope.addObject = function(){
LocalDB.addObject(LoginService.user).then(function(usr){
LoginService.user._id = usr.id;
LoginService.user._rev = usr.rev;
},
function(error){ console.log(error)});
}
$scope.updateObject = function(){
LocalDB.updateObject(LoginService.user, { following: "new" }).then(function(success){});
}
});
此时在websql表中我有两个具有相同id但不同_rev的对象。 第一个对象包含用户数据,第二个对象具有以下名称。如何更新第一个而不创建另一个?
答案 0 :(得分:0)
您可能需要首先获取带有id的文档以检索修订ID,然后您可以使用该ID来放置文档。
return db.get(doc._id) // get document with id
.then(function(origDoc) {
doc._rev = origDoc._rev; // get original revision
return db.put(doc,doc._id,doc._rev) // put using id and revision
.then(function() {
console.log("updated: " + doc._id);
})
.catch(function(e){
console.log(e);
});`