【问题标题】:Document conflict error when updating a design document in couchDB在 couchDB 中更新设计文档时出现文档冲突错误
【发布时间】:2019-11-04 16:02:22
【问题描述】:

我正在从 couch DB 上的“mytest”数据库中获取设计文档,但我想将相同的设计文档上传到不同的数据库,比如“food”。

我用来获取设计文档的命令是:

curl http://localhost:5984/mytest/_design/unique > unique.json

我得到一个看起来像这样的文件:

{"_id":"_design/unique","_rev":"5-e91630ccf1de8b5784333ea24ce50087","views":{"handle":{"map":"function(doc) {emit(doc.user.id, 1);}","reduce":"function(key, values) {return sum(values);}"},"coordinates":{"map":"function(doc) {\nif((doc.coordinates.coordinates[0] < 145.81) && (doc.coordinates.coordinates[0] > 144.28)\n\t&& (doc.coordinates.coordinates[1] < (-37.47)) && (doc.coordinates.coordinates[1] > (-38.44)))\nemit(doc, 1);\n\n}"}},"language":"javascript"}

但是当我在食品数据库上上传相同的设计文件时:

curl -X PUT http://localhost:5984/food/_design/unique -d @unique.json

我收到 {"error":"conflict","re​​ason":"Document update conflict."} 错误。你能帮我解决这个错误吗?我无法理解修订号的概念以及我们如何将这个文件实际放入数据库。

谢谢!!

【问题讨论】:

    标签: http curl couchdb


    【解决方案1】:

    当您更新文档时,您必须提供您正在更新的文档的修订版本。它只允许更新文档的最新版本,如果自您上次看到(获取)文档以来有人更新了文档,它将失败。在您的情况下,您应该首先对您尝试更新的food 数据库设计文档执行 HEAD http 请求。 HEAD 相当轻量级,将返回有关文档的基本信息,包括其当前修订版(响应中的 ETag 字段)。然后使用该修订版以新内容更新文档。有关 API 的更多信息:https://docs.couchdb.org/en/stable/api/document/common.html

    【讨论】:

      猜你喜欢
      • 2019-05-23
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多