On Apr 30, 2008, at 15:43, Guby wrote:
>>>
>> Thanks Jan,
>>
>> That certainly makes it easier. I think I understand your warning
>> regarding doubling of the data. Essentially a results of a view are
>> pre-calculated when the view is save? So using the id's to then
>> retrieve
>> the related object would be a lot more efficient in terms of storage.
>> The trade off being multiple requests to get the actual objects?
> Just as a side note:
> The views are actually calculated or populated on the first request
> of the view (or when documents are saved if you activate that (http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate)
> ) and not when you save the view document itself.
Just a side note to the side note:
There is no way to 'activate' on-write view creation :)
Cheers
Jan
--
>
>
>> Would it be possible to retrieve all the documents in one request. If
>> the id's where continuous it would be easy to use start_key and
>> end_key
>> but what if they are dis-continuous?
> It is actually not necessary that the children's ID's are sequential!
> In Jan's example above you actually get all the children when you
> request the view, and therefore only have to make one request to the
> database to get all the relations!
> The actual ID's of the children doesn't matter to much as they are
> using the parents ID as the key!
>
> Using the following view:
>
>>> function(doc) {
>>> for(var idx in doc.parents) {
>>> map(doc.parents[idx], doc);
>>> }
>>> }
>
> You could get all the children of the parent with ID "foo" like this:
>
> GET /db_name/_view/relations/children_of?key=foo
>
> As long as the design document has the ID "_design/relations" and
> the view the name "children_of"
>
> If you happen to be programming in ruby you can see how I
> implemented this in CouchObject. The changes aren't in the current
> gem yet, but I'll push out a new gem soon. CouchObject now supports
> has_many, has_one and belongs_to relations using the view technique
> above.
> You can get the code from the git repository at http://gitorious.org/projects/couchobject
>
> Best regards
> Sebastian
>
|