如何删除带有空“QUOTE”的couchdb文档&引用;文档id?

如何删除带有空“QUOTE”的couchdb文档&引用;文档id?,couchdb,document,Couchdb,Document,我在db中看到的文件如下: {u id:,_rev:“1-2f11e026763c10730d8b19ba5dce7565”,禁止:“必须提供最新版本以更新现有软件包”} 我在文档中看到的所有内容都显示引用了ID为的文档,但这当然不会发生 我不太清楚这是怎么发生的,很可能是椅子和键盘之间有故障,但我想知道是否有可能在不重新开始的情况下修复此问题。CouchDB中有一个bug允许这种情况发生。我相信它是在v1.1.0中引入的,并将在v1.1.1和v1.2.0中修复 错误在于\u update函数可

我在db中看到的文件如下: {u id:,_rev:“1-2f11e026763c10730d8b19ba5dce7565”,禁止:“必须提供最新版本以更新现有软件包”}

我在文档中看到的所有内容都显示引用了ID为的文档,但这当然不会发生


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

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

错误在于
\u 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 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"}},
]}

关于2.1.1版:

Fauxton项目中存在一个漏洞,允许您在保留新ID为空的情况下克隆文档。Fauxton项目和CouchDB的API都没有提供编辑或删除ID为空的文档的方法

在中,
del_blank
update函数抛出
{“错误”:“非法的文档id”,“原因”:“文档id不能为空”}
。因此,必须将数据库复制到一个新的数据库中,该数据库将存储具有非空ID的文档