Mike McKay
Mike McKay

Reputation: 2636

How to revert changes in couchdb?

I made a mass edit to a bunch of docs in my couchdb, but I made a mistake and overwrote a field improperly. I can see that the previous revision is there. How do I revert back to it?

Upvotes: 4

Views: 3282

Answers (1)

Mike McKay
Mike McKay

Reputation: 2636

My current best guess, based on this:

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

...is to find the doc id and the revision id and then send a delete for that document specifying the revision I want to be gone.

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

I think that will leave the previous revision. Any better ideas out there?

I had to write some coffeescript (using underscore.js and jquery.couch) to do this. It's not a true revert, as we are getting the old revision and creating a new revision with it. Still looking for better suggestions:

      _.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

Upvotes: 3

Related Questions