Если вы жестко объедините комментарии CommentSchema в схему публикации, вы всегда будете довольно ограничены количеством слоев, которые вы жестко закодируете.
Вместо этого рекомендуется ссылаться на другие документы без их объединения. Например (и это только один способ из многих):
Удалите comments: [CommentSchema]
из PostSchema.
const CommentSchema = new mongoose.Schema({
// always require all comments to point to the top post, for easy query of all comments whether nested or not
postId: {
type: ObjectId,
ref: 'posts',
required: true,
}
parentCommentId: {
type: ObjectId,
ref: 'comments',
required: false, // if not populated, then its a top level comment
}
username: {
type: String,
required: true,
},
detail: {
type: String,
required: true,
},
})
Теперь, когда вы загружаете сообщение, выполните запрос, чтобы получить все комментарии с postId: post._id
и отображать их графически, как sh. Другой основной шаблон возможен, если вместо ссылки вверх от комментария к сообщению вы будете ссылаться от сообщения к комментарию [к комментарию и т. Д.], Что позволяет выполнять поиск, но не так просто выполнять простые запросы.
Удачи!