【问题标题】:How to update a document in couchdb by using nano如何使用 nano 更新 couchdb 中的文档
【发布时间】:2019-05-23 18:47:02
【问题描述】:

所以在使用 nano 的 couchdb 中,如果您不知道文档的 _rev,则更新它的唯一方法是使用 db.atomic,这需要将一些设计文档上传到 couchdb。我对吗?我想知道是否有更好的方法来进行原子更新操作,只需在代码库上执行所有操作,而不是将这些设计文档单独上传到我的 couchDB 中?

【问题讨论】:

    标签: javascript node.js couchdb couchdb-nano


    【解决方案1】:

    获取文档的_rev 非常简单,您只需发送一个HEAD-request,您就会立即获得rev。 这是我在 nano 中找到的一些用于更新的代码:

    db.insert({"foo": "bar"}, "foobar", function (error, foo) {
      if(err) {
        return console.log("I failed");
      }
      db.insert({foo: "bar", "_rev": foo.rev}, "foobar", 
        function (error, response) {
          if(!error) {
            console.log("it worked");
          } else {
            console.log("sad panda");
          }
        });
      });
    

    我来自:http://writings.nunojob.com/2012/07/How-To-Update-A-Document-With-Nano-The-CouchDB-Client-for-Node.js.html

    【讨论】:

    • 但这很容易出现竞态条件!
    • 这就是为什么我更喜欢在 couchDB 中的设计文档中进行更新,而不是自己费心 _rev:s。但是这段代码可能会起作用,您可以检查响应代码以查看它是否是更新冲突,在这种情况下获取一个新的 _rev 并重试。
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多