CouchDB — иерархические комментарии с ранжированием. Стиль Hacker News

Я пытаюсь реализовать базовый способ отображения комментариев в том виде, в каком их предоставляет 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принадлежат одной и той же ветви, но упорядочены на этом уровне по их идентификатору.Вместо этого я хочу, чтобы они упорядочены на основе переменной «точек», которую я хочу добавить к пути, но, похоже, не могу понять, где я мог бы добавить эту переменную, чтобы она работала так, как я хочу.

Есть ли способ сделать это? Учтите, что переменная «точки» со временем изменится.

11
задан Octavian A. Damiean 23 May 2012 в 13:00
поделиться