SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов

Как сделать вложенные комментарии в mongodb?

Использую метеор. Надо сделать вложенные комментарии. Есть коллекция комментариев, в которой находятся все комментарии с бесконечной вложенностью (ответы на комментарии). Нормальная ли такая архитектура? Как прикрепить новый комментарий в нужное место? И как сосчитать все комментарии с учетом ответов?
  • Вопрос задан
  • 410 просмотров
Решения вопроса 1
@lega
Как прикрепить новый комментарий в нужное место?
Видимо ссылкой на родительский коммент.

И как сосчитать все комментарии с учетом ответов?
В каждом комменте храните ссылку на пост/статью, таким образом все комментарии поста можно будет вынимать одним запросом, а при добавлении комментария инкрементируйте "числоКомментов" в документе поста, этим вы будите иметь кол-во комментов поста без выкачивания этих самых комментов.

А если вы на прямую не обращаетесь к коментам (бывает и такое), то можно все коменты засунуть в один документ если позволяют лимиты.

Пример, пост:
{
post_id: 'p1',
text: '...'
}

Комментарий в корне
{
comment_id: 'c1'
parent_comment: null,
post_id: 'p1',
text: '...'
}

Дочерний комментарий:
{
comment_id: 'c2'
parent_comment: 'c1',
post_id: 'p1',
text: '...'
}

Добавить дочерний комментарий к комменту c2:
db.comment.insert({parent_comment: 'c2', post_id: 'p', text: '...'})

Выборка всех комментов по посту:
db.comment.find({post_id: 'p1'})
Из полученного списка строите дерево комментов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы