Как заполнить каждый элемент внутри массива объектов в mongoose?

#node.js #mongodb #mongoose #nosql

#node.js #mongodb #мангуст #nosql

Вопрос:

Моя схема базы данных выглядит следующим образом :-

 const CategorySchema = new Schema({
  title: {
    type: String,
    required: true,
    unique: true,
  },
  albums: [
    {
      album: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "albums",
      },
    },
  ],
});

const AlbumSchema = new Schema({
  albumName: {
    type: String,
    required: true,
    unique: true,
  },
  by: {
    type: String,
    required: true,
  },
  albumImageUri: {
    type: String,
    required: true,
  },
  artistHeadline: {
    type: String,
    required: true,
  },
  songs: [
    {
      song: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "songs",
      },
    },
  ],
});

const SongSchema = new Schema({
  songName: {
    type: String,
    required: true,
  },
  songImageUri: {
    type: String,
    required: true,
  },
  songAudioUri: {
    type: String,
    required: true,
  },
});
 

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

Ответ №1:

При использовании запроса get в поле заполнить массив укажите путь и все элементы, которые вы хотите получить, в поле выбрать. Это должно выглядеть примерно так.

 "populate": [{
            "path": 'albums',
            "select": 'albumName by albumImageUri artistHeadline songs'
        }]
 

Комментарии:

1. Я по ошибке добавил объект внутри объекта в массив объектов альбома в схеме категорий