Я пытаюсь реализовать базовый способ отображения комментариев в том виде, в каком их предоставляет Hacker News, используя 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"] }
Это хорошо работает для иерархии. Простой вид
уже вернет вещи в том порядке, в котором я этого хочу.
Проблема возникает, когда я хочу упорядочить каждый «уровень» дерева независимо. Так, например, документы 2
и 4
принадлежат одной и той же ветви, но упорядочены на этом уровне по их идентификатору.Вместо этого я хочу, чтобы они упорядочены на основе переменной «точек», которую я хочу добавить к пути, но, похоже, не могу понять, где я мог бы добавить эту переменную, чтобы она работала так, как я хочу.
Есть ли способ сделать это? Учтите, что переменная «точки» со временем изменится.