On Wed, May 16, 2012 at 3:19 PM, Luca Matteis <[email protected]> wrote:
> Ok. Where would it be appropriate to build such a tree? Can I do it in
> a list function?
> I'm using Couch directly and not interacting with it using other
> languages, so I need Couch to do all the work.
>
> On Wed, May 16, 2012 at 3:14 PM, Dirkjan Ochtman <[email protected]> wrote:
>> On Wed, May 16, 2012 at 2:53 PM, Luca Matteis <[email protected]> wrote:
>>> Isn't there a better way?
>>
>> Since the ordering of descendants depends on the scores of ancestors
>> (if you're talking about getting the whole thread in order), and you
>> don't want to update descendants when ancestors get modified (scores),
>> there by definition is no way to cleanly do this. I think the best way
>> you can do it is to emit the [ancestor_id, score] for each comment,
>> which I think would allow you to build the tree structure in a single
>> loop over all documents:
>>
>> docs, roots = {}, []
>> for key, doc in documents:
>>    if key[0] == null:
>>         roots.append(doc.id)
>>    docs[doc.id] = doc
>>    if key[0]:
>>         docs[key[0]].children.append(doc.id)
>>
>> (In horrible pseudo-Python-JS.)
>>
>> Cheers,
>>
>> Dirkjan



Have a look here :

https://github.com/benoitc/nymphormation

It exactly implement that as a couchapp.

- benoit

Reply via email to