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 に答える