我想实现显示在黑客新闻提供,使用CouchDB的方式评价的基本方法。不仅按层次排序,而且树的每个层次都应该由“点”变量排序。CouchDB - 具有排名的分层评论。黑客新闻风格
的想法是,我想以期在我除了顺序返回它,而不是让很多Ajax调用例如,检索他们,使他们看起来像他们正确排序。
这是我走到这一步:
- 每个文档是一个“注释”。
- 每个注释有一个属性
path
这是一个包含其所有家长的有序列表。
因此,举例来说,假设我有4个注释(以_id 1
,2
,3
和4
)。评论2
是1
孩子,评论3
是2
孩子,评论4
也是1
孩子。这是数据的样子:
{ _id: 1, path: ["1"] },
{ _id: 2, path: ["1", "2"] },
{ _id: 3, path: ["1", "2", "3"] }
{ _id: 4, path: ["1", "4"] }
这对于层次结构很适用。一个简单的view
将已经按照我想要的方式返回事物。
问题是当我想独立顺序对各树的“级别”。因此,例如文档2
和4
属于同一分支,但是是有序的,在那个层面上,通过他们的ID。相反,我希望他们根据我想要添加到路径中的“点”变量进行排序 - 但似乎无法理解我可以在哪里添加此变量,以便按照我想要的方式工作。
有没有办法做到这一点?考虑“点数”变量会随时间变化。
嗨,卢卡。你是否愿意大力更新评论?例如,每个小时都增加他们的年龄?这个问题的答案会影响问题的答案。谢谢! – JasonSmith
嗨@JasonSmith。现在我们可以忘记日期问题。让我们想象每个“评论”都有一个“score”属性,其中包含其分数的整数值。显示器不仅需要如上所述显示层次结构,而且还需要根据此“分数”属性对树的每个“层”进行排序。这是我遇到问题的地方。你可以在这里看到一个我试图实现的例子:http://hckr.iriscou.ch/news/_design/news/_view/items第一个是根评论,其余的孩子和孩子的孩子。关键字包含路径,并将'score'值作为最后一个元素。 –
但是,正如您所看到的,这不起作用,因为键的倒数第二个元素是实际文档的_id。这是必要的,以便我可以附加它的孩子(基于路径逻辑)。我希望这是有道理的。在任何情况下,将分数保持为最后一个值不起作用:( –