代码之家  ›  专栏  ›  技术社区  ›  JasonSmith

CouchDB文档更新处理程序能否获得更新冲突?

  •  9
  • JasonSmith  · 技术社区  · 14 年前

    在编写健壮的更新函数时,我是否应该关注冲突处理代码?

    如中所述 Document Update Handlers

    更新处理程序可以处理非JSON格式;但其他主要特征是:

    • 类似的代码不需要为所有可能的客户机编写—一个枯燥的体系结构
    • 执行速度更快,并且不太可能发生修订冲突

    或者更新处理程序能保证更新成功吗?

    1 回复  |  直到 14 年前
        1
  •  11
  •   Community Nick Dandoulakis    7 年前

    使用更新处理程序时仍然可能发生更新冲突。

    由于减少了“往返时间”,因此发生更新冲突的可能性较低 但不是零。冲突会让人感觉正常:409响应码 使用此JSON:

    {"error":"conflict","reason":"Document update conflict."}
    

    document update handler example , 在壳里连续两次做卷发。

    curl -v -X PUT \
    http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=10 \
    & curl -X PUT \
      http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=1
    

    一个卷曲反应(随机)是201,另一个是409。

    文档更新处理程序不会从根本上改变CouchDB

    更新会发生冲突以及验证失败( 401 Unauthorized 403 Forbidden