如何用空的“”文档ID删除一个couchdb文档?

问题描述:

我看到在DB作为本文件: {_id:“”,_rev:“1-2f11e026763c10730d8b19ba5dce7565”,禁止:“必须提供最新_rev更新现有包”}如何用空的“”文档ID删除一个couchdb文档?

一切我在文档中看到显示引用带有ID的文档,但当然这不会发生。

我并不确定这是怎么发生的,很可能是椅子和键盘之间有问题,但我想知道是否有可能在不重新开始的情况下修复此问题。

CouchDB中存在一个允许发生这种情况的错误。我相信它是在v1.1.0中引入的,并将在v1.1.1和v1.2.0中修复。

问题是_update函数可以创建带有空字符串ID的文档。要删除文档,请使用相同的更新功能并利用相同的错误。

例如:

{ "_id": "_design/example", 
    "updates": { 
    "del_blank": 
    "function(doc, req) { 
     var doc = {_id:'', _rev:req.query.rev, _deleted:true}; 
     return [doc, 'Trying to delete [email protected]'+doc._rev]; 
    }" 
    } 
} 

只需提供该是给你的问题的修订,这将标志着它删除。

$ rev="1-2f11e026763c10730d8b19ba5dce7565" 
$ curl -XPOST localhost:5984/db/_design/example/_update/del_blank?rev=$rev 
Trying to delete [email protected] 

$ curl localhost:5984/db/_all_docs 
{"total_rows":1,"offset":0,"rows":[ 
{"id":"_design/example","key":"_design/test","value":{"rev":"2-b9bfbedff0c09fab88ff36d06cec0d34"}}, 
]}