7

これは、ドキュメントを取得して新しいリビジョンを確認する方法です。

curl  http://localhost/cdb/characters/e6b153975174556adc0b344e9a000a7f?revs=true

returns:
{"_id":"e6b153975174556adc0b344e9a000a7f","_rev":"1-25b25539eca3944ef8d8f20748ed4902","name":"Barack Obama","position":"US President"}

次に、次のようにそのドキュメントを削除しようとします:

curl -X DELETE http://localhost/cdb/characters/e6b153975174556adc0b344e9a000a7f?rev=1-25b25539eca3944ef8d8f20748ed4902

response:
{"error":"conflict","reason":"Document update conflict."}

リビジョンに問題がないように思われる場合、削除時にドキュメントの競合が発生するのはなぜですか?

他のリビジョンがないドキュメントを削除することに問題はありますか?

4

3 に答える 3

11

他のリビジョンを持つドキュメントを削除するには:
curl -X DELETE http://couchhost:5984/couchdb/docid\?rev\=rev_number

これは、取得するときに役立ちました
{"error":"conflict","reason":"Document update conflict."}

于 2013-01-16T17:53:43.667 に答える
5

まず、コードはそのまま正しいように見えるので、パラメータが実際に送信されていることを確認してください。

それ以外の場合は、リビジョンが削除済みとしてマークされているかどうかを確認する必要があります。

curl -X GET http://127.0.0.1:5984/kina/  \
 04ce1239166b841ae8a317897ec45b11?revs_info=true
{
  "_id":"04ce1239166b841ae8a317897ec45b11",
  "_rev":"3-bc27b6930ca514527d8954c7c43e6a09",
  "_revs_info":
  [
   {
    "rev":"3-bc27b6930ca514527d8954c7c43e6a09",
    "status":"available"
   },
   {
    "rev":"2-eec205a9d413992850a6e32678485900",
    "status":"deleted"
   },
   {
    "rev":"1-967a00dff5e02add41819138abb3284d",
    "status":"available"
   }
  ]
}

削除されたバージョンを削除するには、_purgeを使用する必要があります。例えば:

curl -X POST http://127.0.0.1:5984/kina/_purge/ \
     -H "content-type:application/json" \
     -d ’{"7341477ce373f9cc76f351e598001cdd":
           ["2-5c7fb5dfeaf6f7cea149922fa1cdaf96"]
        }’

{
  "purge_seq":1,"purged":
  {
    "7341477ce373f9cc76f351e598001cdd":
    ["2-5c7fb5dfeaf6f7cea149922fa1cdaf96"]
  }
}
于 2012-11-09T16:19:55.190 に答える
0

これは直接的な答えではありませんが、私のようにコーディングが遅すぎて、クエリ パラメーターの名前が_revの代わりに付けられていると思った人にはrev、そのアンダースコアを削除してください。

(実際には、couchdb のデバッグ ログを有効にして、fauxton から送信されたときに couchdb が受信した http 要求と私のアプリを比較する必要がありました)

于 2020-04-30T14:42:31.047 に答える