Скажем, у меня есть следующая схема:
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'
})
Теперь у меня есть документ компании, и я хочу заполнить оба моих 'user 'field и my' rooms 'virtual:
myCompany.populate('user').populate('rooms')
Это работает?Поскольку 'rooms' использует поле 'user' в качестве ref, ожидая ObjectId, однако, если это поле заполнено, оно больше не ObjectId, а документ.Таким образом, теоретически я должен был бы сначала заполнить «комнаты», а затем «пользователя», но мне интересно, позаботится ли mongoose об этом и заполнил «комнаты» с помощью своей ссылки до заполнения пользователя.