incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From King Huang <kchu...@ucalgary.ca>
Subject Getting Deleted Document During Changes
Date Wed, 06 Oct 2010 16:58:46 GMT
I've asked about this before, and I've come up with a workaround for myself, but it's not pretty

I have an app that listens to _changes from a CouchDB database in order to act on changes
to documents.  This involves comparing the current document (which _changes provides via include_docs=true)
with the previous revision (the document that the change acted on). The biggest problem I
have is getting a document that's just been deleted ("deleted":true in the change feed).

Using include_docs=true, the returned doc for a deletion is a deleted doc stub. So, I want
to get the immediately previous revision (ie: the doc that was just deleted), in order to
find out about the deleted document. But, I can't do a revs=true or revs_info=true on the
document in order to get previous revision ids. CouchDB returns a 404 Object Not Found with
{"error":"not_found","reason":"deleted"}.

The only way I've figured out how to get what I need is to resurrect the document by PUT-ting
an empty document back to the database, getting the revisions list with the resurrected doc
in place, then deleting it again. Provided I have the revisions ids, CouchDB seems happy to
provide past revisions of a document regardless of whether the document is currently deleted
or not.

Is there a better way to do this?

In general, the functionality I need is to be able to have _changes send not only the latest
revision of a document, but the immediately previous revision (ie: the document that the change
acted on), if possible. That way, my app can figure out what's different and act appropriately.
Getting the revisions list for a document and GET-ting the previous revision is ok, except
for deletions, as explained above.

Thanks,

King Chung Huang
Technology Solutions Analyst
Information Technologies
University of Calgary





Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message