incubator-couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim McNamara <paperl...@timmcnamara.co.nz>
Subject Re: Hierarchical comments Hacker News style
Date Wed, 16 May 2012 10:26:42 GMT
It may be worth looking at the reddit  source code (github.com/reddit/reddit)
to get some tips. Then you could adapt this into Couch.
On May 16, 2012 9:41 PM, "Luca Matteis" <lmatteis@gmail.com> wrote:

> I'm trying to implement a basic way of displaying comments in the way
> that Hacker News provides, using CouchDB. Not only ordered
> hierarchically, but also, each level of the tree should be ordered by
> a "points" variable. If you're familiar with sites such as Hacker News
> or Reddit you know that each level of the comment tree is ordered by
> the amount of points and also the date they were posted - however, for
> sake of simplicity I'll just talk about a "points" variable.
>
> The idea is that I want a view to return it in the order I except, and
> not make many Ajax calls for example, to retrieve them and make them
> look like they're ordered correctly.
>
> This is what I got so far: Each document is a "comment". Each comment
> has a property `path` which is an ordered list containing all its
> parents. So for example, imagine I have 4 comments (with _id `1`, `2`,
> `3` and `4`). Comment `2` is children of `1`, comment `3` is children
> of `2`, and comment `4` is also children of `1`. This is what the data
> would look like:
>
>    { _id: 1, path: ["1"] },
>    { _id: 2, path: ["1", "2"] },
>    { _id: 3, path: ["1", "2", "3"] }
>    { _id: 4, path: ["1", "4"] }
>
> This works quite well for the hierarchy. A simple `view` will already
> return things ordered with each comment underneath the correct one.
>
> The issue comes when I want to order each "level" of the tree
> independently. So for example documents `2` and `4` belong to the same
> branch, but are ordered, on that level, by their ID. Instead I want
> them ordered based on a "points" variable that I want to add to the
> path - but can't seem to understand where I could be adding this
> variable for it to work the way I want it.
>
> Is there a way to do this? Consider that the "points" variable will
> change in time.
>
> Thank you,
> Luca
>

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