不存在的项目的Rev与Cloudant的预期行为是什么



在Cloudant数据库中,呼叫的预期行为是什么是在不存在的文档上定义的文档?

文档说:

要更新(或创建)文档,请与已更新 JSON内容和最新的_rev值(创建新的不需要 文档)to https://jusername.cloudant.com/quldatabase/qumdocument_id。

我假设如果我确实提供了修订,DB会发现它不是匹配并拒绝请求。在我的测试案例中,我的行为不一致。大多数时候,我得到了预期的409,文件更新冲突。但是,有时,该文档最终会创建(201),并分配了下一个修订版。

我的测试包括创建文档,然后使用该修订来更新其他文档。

  1. 发布https://{url}/{db} {_id:" t1"} - 存储返回的修订版
  2. 放置https://{url}/{db}/t2 {_rev:}

因此,如果返回的修订类似于1-79C389FFDBCFE6C33CED242A13F2B6F2,那么在Put成功的情况下,它将返回下一个修订版(例如2-76054AB954C0EF4C0EF4C0EF4C0EF41EF41E9B82F732F7321616154B)。

编辑

如果我将测试简化为一个步骤,我也可以获得不同的结果。

    Cloudant最终是一个一致的数据库。您正在看到它的影响。在大多数情况下,集群都有时间在两个API呼叫之间达到一致的状态,您将获得预期的更新冲突。有时,您可以触摸不一致的窗口,因为您的第一个呼叫尚未在群集周围复制,而您击中了另一个节点。这是一个有价值的见解:阅读您的写作是不安全的。

    最新更新