在 couchDB 中更新设计文档时出现文档冲突错误

Document conflict error when updating a design document in couchDB

我正在从 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","reason":"Document update conflict."} 错误。你能帮我解决这个错误吗?我无法理解修订号的概念以及我们如何实际将此文件放入数据库。

谢谢!!

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