В проекте есть сущности, которые можно условно назвать постами, и есть сущности, которые можно назвать категориями. Например, пост представляет собой музыкальный альбом. И есть категории - 'артист', 'лейбл' и 'жанр'. Альбому можно присвоить несколько артистов, несколько лейблов и несколько жанров. Например, при создании поста в album.Schema использую поле такого вида:
artists: [
{
type: Schema.Types.ObjectId,
ref: 'artists',
required: true
},
],
Аналогично с полями labels и genres. По сути в бд сохраняются id этих категорий.
А дальше - не очень понимаю, как мне вытащить названия и id указанных категорий при выводе? Например, я передаю на фронт список альбомов, и мне нужно, помимо собственно полей альбома передать не только id, но и названия категорий (артистов, лейблов и жанров).
Также у категорий есть свои страницы, и на них нужно передать список альбомов, которые связаны с этой категорией. Т.е., получается, при сохранении нового поста, нужно как-то обновить и записи категорий? Например, создал я пост Master of Puppets и в качестве категории artist присвоил ему (заранее созданную) запись 'Metallica'. И мне нужно, чтобы и пост master of Puppets оказался связан с записью Metallica, и запись metallica оказалась связанной с постом Master of Puppets.
Более того)) - В том же посте я присваиваю также какой-нибудь лейбл(ы) и жанр(ы). Соответственно, надо чтобы:
- При выводе всех альбомов (и на странице самого альбома) я получил названия и id лейблов, жанров и артистов
- На странице артиста я получил все его альбомы, жанры и лейблы
- На странице лейбла - все его альбомы, жанры и артистов
- На странице жанра - все альбомы, лейблы и артистов
Если я правильно понимаю, это называется many-to-many? Вопрос, в принципе, в том, что это вообще за операции, как лучше их делать, чтобы не перегружать сервер, и куда вообще копать? Может есть какие-то хорошие статьи/видосы, где можно узнать, как делать подобное? Ну или если (вдруг) это несложная рядовая операция, то буду признателен, если напишете в ответе.