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