У меня странный конфликт с моим кодом 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:[email protected]/boardl_users');
return usersDatabaseRemote;
}
])
приводит к:
{"status":409,"name":"conflict","message":"Document update conflict","error":true,"reason":"Document update conflict."}
Но, как вы можете видеть из кода, я беру номер ревизии rev
из удаленного документа, поэтому я не понимаю, почему существует проблема с этим.
благодаря
кредит: @AlexisCôté
Я несколько раз вызывал функцию async, которая обновляет удаленный документ
pouchDBservice.addToExistingUser(userr._id, 'weight',
pouchDBservice.addToExistingUser(userr._id, 'height', userHeight);
pouchDBservice.addToExistingUser(userr._id, 'technique', userTechnique);
и это возилось с номером._rev.
Итак, теперь я делаю все параметры одновременно в объекте:
pouchDBservice.addObjectToExistingUser(userr._id, objectToAdd);
с:
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));
});
};