4

我在我的 couchdb 中对一堆文档进行了大规模编辑,但我犯了一个错误并且不正确地覆盖了一个字段。我可以看到以前的版本在那里。我如何恢复到它?

4

1 回答 1

3

我目前的最佳猜测,基于此:

http://guide.couchdb.org/draft/conflicts.html

...是查找文档 ID 和修订 ID,然后为该文档发送删除,指定我想要删除的修订。

curl -X DELETE $HOST/databasename/doc-id?rev=2-de0ea16f8621cbac506d23a0fbbde08a

我认为这将留下以前的修订。那里有更好的想法吗?

我不得不编写一些咖啡脚本(使用 underscore.js 和jquery.couch)来做到这一点。这不是真正的还原,因为我们正在获取旧版本并使用它创建新版本。仍在寻找更好的建议:

      _.each docsToRevert, (docToRevert) ->
        $.couch.db("databaseName").openDoc docToRevert.id,
          revs_info: true
        ,
          success: (doc) ->
            $.couch.db("databaseName").openDoc docToRevert.id,
              rev: doc._revs_info[1].rev #1 gives us the previous revision
            ,
              success: (previousDoc) ->
                newDoc = previousDoc
                newDoc._rev = doc._rev
                result.save newDoc
于 2012-08-26T20:16:37.157 回答