刚刚从 couchdb 恢复已删除的数据。这就是我在 couchdb irc 上的好人的一点帮助下解决它的方法。
1) 获取您的数据库名称$db/$id?revs=true&open_revs=all
在哪里的请求,并且是您删除的文档的 ID。$db
$id
2)清理响应。奇怪的是,这个请求的结果不是有效的 json,需要清理。以下对我有用:
var 已删除文档 =JSON.parse(xhReq.responseText.substring(xhReq.responseText.indexOf("{"), xhReq.responseText.lastIndexOf("}") + 1));
生成的对象如下所示:
{
"_id":"37b580b03b903da2b50f88587d89c15d",
"_rev":"2-bf3a2888dfe1ce0facef18720dcf97e2",
"_deleted":true,
"_revisions":{
"start":2,
"ids":["bf3a2888dfe1ce0facef18720dcf97e2","85f141069731f6bc77c910b0341e599f"]
}
}
3) 现在我们可以构造最后一个修订号,也就是它被删除之前的那个。拉出 _revisions.ids 数组中的第二个 guid 并附加 _revisions.start - 1 和一个“-”字符。这会为您提供文档在被删除之前的修订版本。
var preDeleteRevisionNumber = (deletedDoc._revisions.start - 1) + "-"+ deletedDoc._revisions.ids[1];
4)现在收集原始(预删除数据)并获取$db/$id?rev=$preDeleteRevisionNumber
5)要覆盖旧的已删除条目,您必须发布或放回具有正确 id 和最新修订号的文档(不是删除前的修订号,而是文档现在已被删除的修订号)。
希望这可以帮助某人。