我从沙发数据库中的“mytest”数据库中获取设计文档,但我想在不同的数据库上传相同的设计文档,让我们说“食物”。
我用来获取设计文档的命令是:
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
我得到{“错误”:“冲突”,“原因”:“文档更新冲突。”}错误。你能帮我解决一下这个错误吗?我无法理解修订号的概念以及我们如何将该文件实际存入数据库。
谢谢!
答案 0 :(得分:7)
更新文档时,必须提供要更新的文档的修订版。它允许仅更新文档的最新版本,如果有人在您上次查看(获取)文档后更新了文档,则会失败。在您的情况下,您应首先对您尝试更新的food
数据库设计文档执行HEAD http请求。 HEAD相当轻量级,将返回有关文档的基本信息,包括其当前版本(响应中的ETag字段)。然后使用该修订版更新带有新内容的文档。有关API的更多信息:https://wiki.apache.org/couchdb/HTTP_Document_API