Put方法上的PouchDB将返回“文档更新冲突”

时间:2018-06-15 07:39:43

标签: pouchdb

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!)

1 个答案:

答案 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

  

注意:限制冲突,有限的更改文件