On Sun, Sep 19, 2010 at 5:37 AM, Jan Lehnardt <j...@apache.org> wrote:
>
> On 14 Sep 2010, at 03:26, J Chris Anderson wrote:
>
>>
>> On Sep 13, 2010, at 6:23 PM, Simon Metson wrote:
>>
>>> Hi James.
>>>      I think the thing to do is require that a document has a user field, 
>>> and that the value of that field matches the userCtx in the 
>>> validate_doc_update function. This then pushes the issue client side, and 
>>> makes the servers life easier. It could also be added by the front end 
>>> apache in the case of our deployment, I think. I can see this sort of 
>>> trigger thing being a good way of giving people a loaded gun aimed at their 
>>> foot, they certainly are in Oracle if you're not careful.
>>> Cheers
>>> Simon
>>
>> The big issue is that any code which runs on normal document updates, will 
>> also run during replication, as replication is just a normal client. So this 
>> means that adding a field will happen not just on the original client PUT 
>> but also when replication happens.
>>
>> This is why _update is a separate handler.
>
> Adding a required field should be idempotent (correct me if I
> am wrong) so it doesn't matter that replication is an agent of
> the user.

people want to add timestamps. they will call it doc.created_at and
then be surprised when it behaves like doc.replicated_at

the alternative of not setting doc.created_at unless it is null leaves
open the potential for clients to spoof timestamps (just like they can
now).

so I don't see a real use case for something like this, except for
trivial things like forcing that doc.foo == "foo" always, but what's
the point in that?

Chris

>
> In the past we talked about "blessing" a ddoc / update function
> that would magically invoke the update function on every write.
> (analog for _show and _list) and people seem to like to explore
> that idea. That said, the "magic" bit worries me a little :)
>
> Cheers
> Jan
> --
>
>
>
>>
>> Chris
>>
>>>
>>> On 9 Sep 2010, at 05:19, James Jackson wrote:
>>>
>>>> Hi all,
>>>>
>>>> Moving this from the users forum, as it appears what I'm after isn't 
>>>> currently available. For the security model I with to implement in a 
>>>> production CouchDB cluster, I would like to be able to force a field to be 
>>>> written to all docs based on the user context. The _update functionality 
>>>> is not what I am after as it requires the user to actually call it when 
>>>> writing a document (means security could be got-around by not calling 
>>>> this, and setting the required field in the passed document to something 
>>>> arbitrary, which would then not get caught by a validation function), and 
>>>> can't modify a document which is passed to it (as far as I can tell it can 
>>>> only modify existing documents, or create new ones).
>>>>
>>>> I see this ticket:
>>>>
>>>> https://issues.apache.org/jira/browse/COUCHDB-441
>>>>
>>>> which talks about the functionality I am after, but appears to have 
>>>> morphed into what is now there.
>>>>
>>>> I am willing to implement such functionality, if it already doesn't exist, 
>>>> but wonder if this would be welcome in the trunk, or if there are killer 
>>>> pitfalls which stop this being possible. I note that in the discussion on 
>>>> that ticket there is talk of how to deal with multiple such 
>>>> modify-on-write functions, perhaps this is one area that needs discussion?
>>>>
>>>> In any case, I'll probably implement this for our CouchDB installation, 
>>>> but it would be good to make it generic and globally useful such that I 
>>>> can contribute it back. I know of a number of people who would like this 
>>>> functionality...
>>>>
>>>> Regards,
>>>> James.
>>>
>>
>
>



-- 
Chris Anderson
http://jchrisa.net
http://couch.io

Reply via email to