I have a schema structure that is '3 deep' and I find that I can't display information that is at the third level. I'm not sure if it's because this a virtual field, or if I'm doing something wrong.
The collections are programme>project>output. The programme schema looks up the projects like this....
const programmeSchema = new mongoose.Schema({ 
      name: { 
         type: String
      }, 
      projects: [{ type: mongoose.Schema.ObjectId, ref: 'Project' }],
      ... 
})
Which returns the project. My project schema (middle level) has a virtual field for the outputs collection (third level), like so....
projectSchema.virtual('outputs', 
     { 
       ref: 'Output', 
       foreignField: 'project', 
       localField: '_id' 
  })
Which works fine when I find and display a single project. However, when I try and display the documents from the outputs collection at the programme (top) level, I can't do it. I've tried various different populates, such as.....
await Programme.findOne({ _id: req.params.id }).populate({ 
      path: 'projects', 
      populate: { 
        path: 'outputs' 
     } 
  })
but I'm stumped. I've googled around but aside from one article that I struggled to follow, I can't find anything about this (deep populating a virtual field).
Please could someone tell me where I am going wrong?