在 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
我正在从 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