gpt4 book ai didi

couchdb - 批量更新 CouchDB 数据库,每个文档没有 _rev 值?

转载 作者:行者123 更新时间:2023-12-03 01:34:31 24 4
gpt4 key购买 nike

根据CouchDB Wiki on PUT operations

To update an existing document, you also issue a PUT request. In this case, the JSON body must contain a _rev property, which lets CouchDB know which revision the edits are based on. If the revision of the document currently stored in the database doesn't match, then a 409 conflict error is returned.

我的目标是执行批量文档更新:

curl -X POST [domain]/[couch db name]/_bulk_docs -H "Content-type: application/json" -d @[some document].json

我的工作流程是这样的:

  1. 我的数据位于 Google 文档电子表格中。
  2. 我通过复制并粘贴到 Mr. Data Converter 将电子表格数据转换为 JSON
  3. 我使用 cURL(如上所示)来添加/更新文档

问题是,第一次添加新文档时,一切正常,但是下次我发布相同的文档时,每个文档都会出现以下错误:

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

有没有办法在不包含 _rev 属性的情况下更新现有文档?

最佳答案

根据设计,您不能盲目更新 CouchDB 文档,只能尝试更新文档的特定修订版。

对于单个文档,您可以使用 CouchDB update handler为了向客户端隐藏这一点,因为更新处理程序将传递现有文档(如果存在),包括其修订版。

对于文档集合,使用_bulk_docs时,您可以添加"new_edits": false,这将强制插入冲突而不是拒绝(尽管您仍然需要要传递_rev,它不必是当前的)。

话虽如此,遵守规则会更好。获取您想要更新的文档的当前版本,尝试更新它,如果收到 409,则获取新版本,适当合并,然后再次更新。

关于couchdb - 批量更新 CouchDB 数据库,每个文档没有 _rev 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6983930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com