2016-05-09 12 views
3

couch DBの "mytest"データベースからデザインドキュメントを取得していますが、同じデザインドキュメントを別のデータベースにアップロードしたいとします。couchDBでデザインドキュメントを更新するときにドキュメント競合エラーが発生する

私が設計文書を取得するために使用しています

コマンドは次のとおりです。

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 

{"エラー": "理由": "ドキュメントの更新con flict。 "}エラーが発生しました。このエラーを解決するのを手伝ってください。私は、リビジョン番号の概念と、実際にこのファイルをデータベースに格納する方法を理解できません。

ありがとうございました!

答えて

6

ドキュメントを更新するときは、更新するドキュメントのリビジョンを指定する必要があります。最新のバージョンのドキュメントのみを更新することができます。最後に見たときからドキュメントを更新した場合は失敗します。あなたの場合は、最初に更新しようとしているfoodデータベース設計書へのHEAD httpリクエストを実行する必要があります。 HEADはかなり軽量で、現在のリビジョン(応答のETagフィールド)を含むドキュメントに関する基本情報を返します。そのリビジョンを使用して、新しいコンテンツでドキュメントを更新します。 APIの詳細:https://wiki.apache.org/couchdb/HTTP_Document_API

関連する問題