couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Jackson <james.jack...@cern.ch>
Subject Re: Updates methods
Date Thu, 09 Sep 2010 07:46:41 GMT
Hi Johannes,

Thank you - so from what I can see, it isn't actually possible in intercept all document inserts
and modify them server-side? The update handler functionality appears to only be able to modify
existing docs, or create a new one, and even then has to be called with a special URL syntax.

What I would like to achieve (for implementation of a security policy) is to be able to add
some information from the userCtx object to every document on an initial PUT / POST, without
requiring the user to call something explicitly different. While I could steam ahead and patch
our version of CouchDB to perform this, I'd rather not diverge from the trunk more than we
already have (with the addition of custom HTTP auth handlers).

Is there any way to accomplish this at present?

Regards,
James.

On 9 Sep 2010, at 06:08, Johannes J. Schmidt wrote:

> Hi James,
> 
> Update handlers are not automatically executed on regular document
> updates. Instead, you have to PUT your update to an URL like
> 
> $HOST/$DB/_design/update/_update/add_user
> 
> You will have to process every property manually inside the update
> function.
> 
> Read more about update handlers in the wiki:
> http://wiki.apache.org/couchdb/Document_Update_Handlers
> 
> Greetings
> Johannes
> Am Donnerstag, den 09.09.2010, 00:04 +0100 schrieb James Jackson:
>> Hi,
>> 
>> I'm trying to implement a method to modify all documents before they are written
to the DB. From my poking around in various tickets, I believe the updates entry in a design
document is what I'm after (I'm running 1.0.1).
>> 
>> I have inserted the following design document into my database:
>> 
>> {
>>   "_id":"_design/update",
>>   "_rev":"1-8800f3bdde13e5bcf6738635f0265b6d",
>>   "language":"javascript",
>>   "updates" : {
>>      "add_user":"function(doc, req){doc.newauth = req.userCtx; return [doc, \"ok\"];}"
>>   }
>> }
>> 
>> However, this does not appear to get run when putting a document to the database
(nothing in the debug log but the usual). Is this functionality supported? Am I doing something
funny? All help appreciated!
>> 
>> Regards,
>> James.
> 
> -- 
> Netzmerk GbR
> Johannes J. Schmidt
> 
> http://netzmerk.com
> 0157 79 76 20 30
> 
> Am Vierstückenpfuhl 3a
> 14167 Berlin


Mime
View raw message