说我有以下架构:
UserSchema = Schema({
_id: Schema.Types.ObjectId
})
RoomSchema = Schema({
_id: Schema.Types.ObjectId,
userId: {
type: Schema.Types.ObjectId,
ref: 'User'
}
})
CompanySchema = Schema({
_id: Schema.Types.ObjectId,
user: {
type: Schema.Types.ObjectId,
ref: 'User'
}
})
我的CompanySchema具有以下虚拟:
CompanySchema.virtual('rooms', {
ref: 'Room',
localField: 'user',
foreignField: 'userId'
})
现在我有公司文件,并且想同时填写我的“用户”字段和我的“房间”虚拟域:
myCompany.populate('user').populate('rooms')
这有效吗?因为“房间”使用“用户”字段作为参考,因此需要一个ObjectId,但是如果填充此字段,则它不再是ObjectId,而是文档。因此,从理论上讲,我必须先填充“房间”,然后再填充“用户”,但我想知道猫鼬是否会替我照顾这个问题,并在用户填充之前使用其引用 来填充“房间”。