我与我的pouchDB代码有一个奇怪的冲突,试图更新我的数据库中的文档
代码:
this.addToExistingUser = function (docId, key, value) {
usersDatabaseRemote
.get(docId)
.then(function (doc) {
doc[key] = value;
return usersDatabaseRemote.put(doc, docId, doc._rev);
})
.then(function () {
console.log('added field: ' + key + ' to doc ' + docId);
})
.catch(function (err) {
console.log("error from addToExistingUser:");
console.log(JSON.stringify(err));
});
}
其中:
.factory('usersDatabaseRemote', [
'pouchDB',
function (pouchDB) {
'use strict';
var usersDatabaseRemote = pouchDB('https://id:pwd@id.cloudant.com/boardl_users');
return usersDatabaseRemote;
}
])
导致:
{"status":409,"name":"conflict","message":"Document update conflict","error":true,"reason":"Document update conflict."}
但是从代码中可以看出,我从远程文档中获取了修订号rev
,因此我不明白为什么会出现此问题。
谢谢
答案 0 :(得分:1)
我多次调用更新远程文档的异步函数
pouchDBservice.addToExistingUser(userr._id, 'weight',
pouchDBservice.addToExistingUser(userr._id, 'height', userHeight);
pouchDBservice.addToExistingUser(userr._id, 'technique', userTechnique);
这是在弄乱._rev号码。
所以现在我在一个对象中同时做所有参数:
pouchDBservice.addObjectToExistingUser(userr._id, objectToAdd);
with:
this.addObjectToExistingUser = function (docId, obj) {
usersDatabaseRemote
.get(docId)
.then(function (doc) {
for (var key in obj) {
if (!obj.hasOwnProperty(key)) continue;
console.log(key, obj[key])
doc[key] = obj[key];
}
return usersDatabaseRemote.put(doc);
})
.then(function () {
console.log('addObjectToExistingUser added object: ' + JSON.stringify(obj) + ' to doc ' + docId);
})
.catch(function (err) {
console.log("error from addObjectToExistingUser:");
console.log(JSON.stringify(err));
});
};