Создание схемы MongoDB для комментариев и пользователей. Какой способ лучше использовать при ссылках 1: N или N: 1? - PullRequest
0 голосов
/ 05 февраля 2019

При создании схемы для публикации и комментариев для любого веб-сайта в социальных сетях я видел людей, использующих два подхода: встраивание документов и ссылок.Далее в ссылках у нас может быть два подхода, как показано ниже. Какой из следующих вариантов более эффективен?

Подход 1 : Здесь у нас есть массив комментариев в схеме поста, где мы храним идентификатор комментариясослаться на схему комментариев.Мы заполняем комментарий при отображении всех данных поста.(См. Код ниже). Схема публикации:

//POST SCHEMA
const PostSchema = new mongoose.schema({
    postTitle: String,
    postContent: String,
    comment: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Comments'
        }
    ]
    ...
    ...
})

Схема комментариев:

const CommentSchema = new mongoose.schema({

     commentText: String,

})

Подход 2 : Здесь мы не включаем массив комментариев в схему сообщения вместовнутри массива комментариев мы ссылаемся на пост через идентификатор.(См. Код ниже)

Схема публикации:

//POST SCHEMA
const PostSchema = new mongoose.schema({
   postTitle: String,
   postContent: String,

   ...
   ...
})

Схема комментариев

const commentSchema = new mongoose.schema({
   commentText: String,
   post: {
     type: mongoose.Schema.Types.ObjectId,
     ref: 'Post'
   }

})

В двух приведенных выше подходах я смог понять это очень сильно, что 1-й подходсохраняет идентификатор каждого комментария, и при его заполнении выполняет поиск в массиве комментариев для каждого идентификатора и заполняет содержимое.

2-й подход имеет идентификатор сообщения, сохраненный в каждом комментарии, поэтому при поиске ему нужен только идентификатор сообщения, и он может искатьвсе комментарии к этому посту в массиве комментариев и возврат комментариев.

Какой подход я должен рассмотреть для использования в социальных сетях или вообще?Я не ищу никаких сравнительных тестов, просто если кто-то использовал эти подходы раньше, может рассказать мне о плюсах и минусах обоих.

Спасибо.

...