2012-11-09 35 views
6

Đây là cách tôi nhận được tài liệu và kiểm tra các phiên bản mới hơn:Không thể xóa tài liệu vì cập nhật xung đột

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

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

Sau đó, tôi cố gắng xóa doc như thế này:

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

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

Tại sao, nếu có vẻ như không phải là một vấn đề với bản sửa đổi, có một xung đột tài liệu về xóa không?

Có vấn đề với việc xóa tài liệu không có bản chỉnh sửa khác không?

+0

Không, CouchDB không có một vấn đề xóa một tài liệu khi chỉ có một bản sửa đổi như trong trường hợp của bạn. Điều này chỉ có thể xảy ra, nếu có bản sửa đổi mới hơn. Phiên bản CouchDB nào bạn đang làm việc cùng? Yêu cầu http của bạn có vẻ đúng. – awenkhh

Trả lời

5

Đầu tiên, vì mã của bạn có vẻ chính xác như cũ, hãy kiểm tra xem thông số của bạn có đang được gửi đi hay không.

Nếu không, bạn nên kiểm tra xem một phiên bản được đánh dấu là bị xóa:

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" 
    } 
    ] 
} 

Để thoát khỏi các phiên bản bị xóa, bạn phải sử dụng _purge. Ví dụ:

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"] 
    } 
} 
+0

lạ, proxy tôi đã gửi yêu cầu thông qua đã không thêm các đối số vào cuối chuỗi. :/ – Kristian

+0

ah - vì vậy đó là một vấn đề không liên quan đến đi văng và bạn đã làm mọi thứ một cách chính xác ;-) – awenkhh

+0

ya, xin lỗi vì lãng phí thời gian của bạn! :/ – Kristian

9

Xóa một doc trong đó có các phiên bản khác được thực hiện:
curl -X DELETE http://couchhost:5984/couchdb/docid\?rev\=rev_number

này đã giúp tôi khi nhận được
{"error":"conflict","reason":"Document update conflict."}

Các vấn đề liên quan