схема ответов на комментарии с использованием мангуста - PullRequest
0 голосов
/ 07 августа 2020

Я не могу придумать способ создать правильную схему для обработки сообщений, комментариев и ответов. В основном застрял на том, как я буду обрабатывать ответы на комментарий. В основном, как Reddit, где они публикуют сообщение, а затем отвечают, и вы можете отвечать каждому ответу

Комментарии визуально

введите описание изображения здесь

(предположим, что все они отвечают на странице сообщения с заголовком)

const CommentSchema = new mongoose.Schema({
    username: {
        type: String,
        required: true,
    },

    detail: {
        type: String,
        required: true,
    },


})


const PostSchema = new mongoose.Schema({
    author: {
        type: String,
        required: true,
    },
    title: {
        type: String,
        required: true
    },

    description: {
        type: String,
        required: true
    },
    comments: [CommentSchema]





})

Приведенная выше схема не обрабатывает ответы на другие комментарии. Как я могу также обрабатывать ответы?

1 Ответ

0 голосов
/ 07 августа 2020

Если вы жестко объедините комментарии 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. Другой основной шаблон возможен, если вместо ссылки вверх от комментария к сообщению вы будете ссылаться от сообщения к комментарию [к комментарию и т. Д.], Что позволяет выполнять поиск, но не так просто выполнять простые запросы.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...