Как сделать комментарии в Activity Stream? (как Facebook) - PullRequest
2 голосов
/ 03 мая 2010

Я начинаю развивать поток активности. Я прочитал оба Как реализовать поток активности в социальной сети и Как лучше всего реализовать поток социальной активности? . То, что я не нашел, - лучший способ добавить комментарии к действиям. Как и в Facebook, каждый комментарий может комментировать другой человек.

Если каждый комментарий к действию сохраняется как другое действие, я не смог бы получить действие этого комментария без выполнения запроса. Поэтому решение, которое я думаю, состоит в том, чтобы сохранить комментарии внутри поля данных сериализации каждого действия. Если пользователь хочет удалить свой комментарий, мне нужно обновить это действие.

Это правильное решение? Есть ли лучший подход?

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Я согласен с Якубом - это зависит от вашего бэкэнда, но то, что вам нужно, - это эффективный способ хранения дерева. Если вы используете базу данных SQL, я бы сохранил как родительское действие, так и корень дерева (основной идентификатор?). Таким образом, вы сможете быстро получить целое дерево комментариев, учитывая любой комментарий или идентификатор активности.

Ваш код поиска будет выглядеть примерно так:

  • Чтобы воспроизвести весь поток действий с комментариями, захватите все записи с одним и тем же основным идентификатором. Возможно, вы захотите представить основные записи как имеющие нулевой родительский идентификатор.
  • При добавлении комментария вам необходимо обновить два поля - основной идентификатор и родительский идентификатор. Вы можете получить их оба непосредственно из родительской активности без необходимости поиска.
  • При удалении комментария, просто удалите его, и он исчезнет из дерева.
  • Если вы просто хотите «основные» действия, то выберите, где parent = null, и все готово.

Пример, если это поможет:

  • Основная активность (id = 123, p = null, m = 123)
    • Комментарий (id = 124, p = 123, m = 123)
    • Еще один комментарий (id = 125, p = 123, m = 123)
      • Подкомментарий (id = 126, p = 125, m = 123)

Я помню, как читал пример этого, используя хранилище на основе документов с Couch-DB. Я не могу найти его сейчас, но из памяти он использовал что-то похожее (главные идентификаторы для родительских записей).

0 голосов
/ 10 мая 2010

Этот тип зависит от того, какой тип сервера вы используете и какие у вас ограничения.

Сериализация комментариев кажется разумным подходом, или я думаю, вы могли бы просто использовать полиморфную таблицу комментариев (если вы используете реляционную базу данных).

...