У меня есть структура схемы «3 глубины», и я обнаружил, что не могу отобразить информацию, которая находится на третьем уровне. Я не уверен, если это потому, что это виртуальное поле, или я делаю что-то не так.
Коллекции являются программой> проект> вывод. Схема программы ищет проекты следующим образом ...
const programmeSchema = new mongoose.Schema({
name: {
type: String,
},
projects:
[{ type: mongoose.Schema.ObjectId, ref: 'Project' }],
...
})
Что возвращает проект. В моей схеме проекта (средний уровень) есть виртуальное поле для коллекции выходных данных (третий уровень), например ...
projectSchema.virtual('outputs', {
ref: 'Output',
foreignField: 'project',
localField: '_id'
})
, которое отлично работает, когда я нахожу и отображаю один проект. Однако, когда я пытаюсь отобразить документы из выходной коллекции на уровне программы (верхний уровень), я не могу этого сделать. Я пробовал разные варианты, например .....
await Programme.findOne({ _id: req.params.id }).populate({
path: 'projects',
populate: {
path: 'outputs'
}
})
, но я в тупике. Я гуглил вокруг, но кроме одной статьи, которой я изо всех сил пытался следовать, я не могу найти ничего об этом (глубокое заполнение виртуального поля).
Пожалуйста, кто-нибудь может сказать мне, где я иду не так?