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.
我的目标是执行bulk_docs更新:
curl -X POST [domain]/[couch db name]/_bulk_docs -H "Content-type: application/json" -d @[some document].json
我的工作流程是这样的:
>我的资料位于Google文件试算表中.
>我将电子数据表数据转换为JSON,复制并粘贴到Mr. Data Converter中
>我使用cURL(如上所示)添加/更新文档
问题是,我第一次添加新的文档,一切都很好,但是下次发布相同的文档时,我会收到每个文档的以下错误:
…{“id”:”28″,” error”:”conflict”,”reason”:”Document update conflict.”}…
解决方法
对于单个文档,您可以使用CouchDB update handler将其从客户端隐藏,因为更新处理程序将传递包含其修订版本的现有文档(如果存在).
对于文档集合,使用_bulk_docs时,可以添加“new_edits”:false,这将强制插入冲突而不是拒绝(尽管您仍然需要传递_rev,但不一定是当前的) .
所有这一切,最好遵守规则.获取您要更新的文档的当前版本,尝试更新它,如果您获得了409,获取新版本,根据需要进行合并,然后再次更新.