假设我有3个模式。
class User {
@Prop()
name: string
}
class Exam {
@Prop()
name: string
@Prop({ ref: () => Exam }, PropType.ARRAY)
examReq?: Ref<Exam>[]
}
class UserExam {
@Prop({ ref: () => User })
userId: Ref<User>
@Prop({ ref: () => Exam })
examId: Ref<Exam>
}如何在查找时填充所有这些嵌套文档?我尝试了下面的方法,并且正在填充测试,但是examReq返回的是空的。
userExamModel.find({ _id: id }).populate('examId').populate('examId.examReq')发布于 2022-11-30 11:11:53
(这个问题也出现在#773版的“鹅”中,并得到了@teynar的回答)
如果在运行之前有多个具有相同路径的.populate调用,那么只有最后一个.populate调用才会生效,正如猫鼬:填充多条路径中所记录的那样。
解决这一问题的办法是:
.populate({ path: 'examId', populate: { path: 'examReq' } });
// Note that just "examId.examReq" does not work这将导致2(3,如果算上find本身)不同的查询,所以它将与执行相同:
const doc = await Model.findOne({});
await doc.populate('examId');
await doc.populate('examReq');https://stackoverflow.com/questions/74618080
复制相似问题