用猫鼬填充多个字段,顺序重要吗?

时间:2018-10-16 23:40:35

标签: mongoose mongoose-populate

说我有以下架构:

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,而是文档。因此,从理论上讲,我必须先填充“房间”,然后再填充“用户”,但我想知道猫鼬是否会替我照顾这个问题,并在用户填充之前使用其引用 来填充“房间”。

0 个答案:

没有答案