Да, для ответов на комментарии обычно создают отдельную таблицу, в которой будет храниться айди комментария, на который был дан ответ. Это позволит связать ответы с их родительскими комментариями и выводить их в нужном порядке.
Чтобы вывести ответы на комментарий в нужное место, можно использовать рекурсию. То есть, для каждого комментария, нужно проверить, есть ли у него ответы, и если есть, то рекурсивно вызвать функцию вывода ответов, передав ей список ответов. Таким образом, ответы будут выводиться вложенными под комментарием, на который они были даны.
Пример кода на Node.js с использованием рекурсии:
function displayComments(comments) {
comments.forEach(comment => {
console.log(comment.text);
if (comment.replies.length > 0) {
displayComments(comment.replies);
}
});
}
// Пример использования
const comments = [
{
id: 1,
text: "Комментарий 1",
replies: [
{
id: 2,
text: "Ответ на комментарий 1",
replies: []
},
{
id: 3,
text: "Еще один ответ на комментарий 1",
replies: [
{
id: 4,
text: "Ответ на ответ на комментарий 1",
replies: []
}
]
}
]
},
{
id: 5,
text: "Комментарий 2",
replies: []
}
];
displayComments(comments);
В этом примере функция displayComments принимает список комментариев и рекурсивно выводит их тексты и ответы. Если у комментария есть ответы, функция вызывает саму себя для вывода ответов.