PouchDB无法更新CouchDB条目。 它返回“文档更新冲突。”
我在pouchdb documnetation上读到了冲突问题,我尝试了很多场景,但总是有相同的结果。
409 Document update conflict
所以这里是最后一个代码:
docs.forEach((element, index) => {
if (categoriesData[element._id] != null){
pouchdatabase.get(element._id).then(function (origDoc) {
// var doc = element;
// doc._rev = origDoc._rev;
// doc.name = categoriesData[element._id].newName;
// var doc = {
// _id: element._id,
// _rev: origDoc._rev,
// name: categoriesData[element._id].newName
// };
pouchdatabase.put( {
_id: element._id,
_rev: origDoc._rev,
name: categoriesData[element._id].newName
}).then(function (response) {
console.log('updated');
}).catch(function (err) {
console.log(err);
});
});
}
});
我试过这个解决方案(在Pouchdb github上找到),但同样的错误......
var retryUntilWritten = function (doc) {
return pouchdatabase.get(doc._id).then(function (origDoc) {
doc._rev = origDoc._rev;
return pouchdatabase.put(doc);
}).catch(function (err) {
if (err.status === 409) {
return retryUntilWritten(doc);
} else { // new doc
return pouchdatabase.put(doc);
}
});
};
您是否知道如何更新该类别的name
?
本地名称属性将被替换! (在pouchdb中,但不会更新到couchdb!)
答案 0 :(得分:1)
当您尝试更新没有_rev的文档或过时的文档修订(从修订树中删除)时发生冲突。
所以,要在没有有效_rev的情况下进行更新。您可以将选项<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="beds">
<select name="min_beds">
<option value="" disabled selected>Min Beds</option>
<option value="1">1 Bed</option>
<option value="2">2 Bed</option>
<option value="3">3 Bed</option>
<option value="4">4 Bed</option>
<option value="5">5 Bed</option>
<option value="6">6 Bed</option>
<option value="7">7 Bed</option>
<option value="8">8 Bed</option>
<option value="9+">9+ Bed</option>
</select>
<p>to</p>
<select name="max_beds">
<option value="" disabled selected>Max Beds</option>
<option value="1">1 Bed</option>
<option value="2">2 Bed</option>
<option value="3">3 Bed</option>
<option value="4">4 Bed</option>
<option value="5">5 Bed</option>
<option value="6">6 Bed</option>
<option value="7">7 Bed</option>
<option value="8">8 Bed</option>
<option value="9+">9+ Bed</option>
</select>
</div>
设置为force
true
详细了解冲突here:
注意:限制冲突,有限的更改文件