Заполните массив в Mongoose - PullRequest
0 голосов
/ 26 апреля 2020

Я создаю поисковый запрос для training sessions, который вернет мне сведения о сеансе, заполнив данные из coach (ObjectId) и participants (Array of ObjectIds). Я могу заполнить тренера, но не могу заполнить участников. Моя схема сеанса:

const mongoose = require('mongoose');
import { timestamp } from "./plugins/timestamp"
import { User } from './index'

const SessionSchema = new mongoose.Schema({

  coach: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
  title: { type: String, required: true, default: "Lacrosse Training Session" },
  participants: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
});
SessionSchema.plugin(timestamp);

export const Session = mongoose.model('Session', SessionSchema);

И я пытаюсь заполнить:

const session = await Session.findById(req.params.id).populate('coach').populate('participants');

Выход Когда я использую только populate('coach'), я получаю что-то вроде :

coach: {address: {city: "Joes"}, name: "John John", …} <= <= <= POPULATED
participants: ["5ea43590f105a4188358210f", "5ea43590f105a4188358210e", "5ea43590f105a41883582115"]

Но когда я использую populate('coach').populate('participants'), я получаю того же тренера, но пустых участников (participants: [])

Почему это так? Как я могу заполнить каждый элемент массива участников?

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2020

вы можете использовать один из следующих способов:

1-

const session = await Session.findById(req.params.id).populate([{ path: 'coach' }, { path: 'participants' }])

2-

const session = await Session.findById(req.params.id).populate({ path: 'coach' }).populate({ path: 'participants' });

также убедитесь, что идентификаторы этих участников уже существуют в Пользовательская коллекция

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