В CouchDB есть ошибка, которая позволяет этому случиться. Я полагаю, что это было введено в v1.1.0 и будет исправлено в v1.1.1 и v1.2.0.
Ошибка в том, что _update
функции могут создавать документы с пустыми идентификаторами строк. Чтобы удалить документ, используйте ту же функцию обновления и используйте ту же ошибку.
Например:
{ "_id": "_design/example",
"updates": {
"del_blank":
"function(doc, req) {
var doc = {_id:'', _rev:req.query.rev, _deleted:true};
return [doc, 'Trying to delete nastydoc@'+doc._rev];
}"
}
}
Просто предоставьте ревизию, которая вызывает у вас проблемы, и она пометит ее как удаленную.
$ rev="1-2f11e026763c10730d8b19ba5dce7565"
$ curl -XPOST localhost:5984/db/_design/example/_update/del_blank?rev=$rev
Trying to delete nastydoc@1-2f11e026763c10730d8b19ba5dce7565
$ curl localhost:5984/db/_all_docs
{"total_rows":1,"offset":0,"rows":[
{"id":"_design/example","key":"_design/test","value":{"rev":"2-b9bfbedff0c09fab88ff36d06cec0d34"}},
]}