如何在运行时动态填充mongoose文档引用?

时间:2015-09-17 07:49:49

标签: mongodb mongoose mongoose-populate

我的架构有一个可以引用不同架构的字段。

var HistorySchema = new Schema({
  type: {type: String, required: true},
  objectId: {
    type: Schema.Types.ObjectId,
    required: true,
  },
  changed: {type: Schema.Types.Mixed}
})

此架构的文档允许我跟踪types个不同objectId个对象中发生的更改。

例如,如果User已更改name来自' John'对于史蒂夫',History文件会:

{
    type: 'User',
    objectId: '55fa6bf0831ba3fa0879e7e8',
    changed: {name: {oldValue: 'John', newValue: 'Steve'}}
}

显然,type可以有很多不同的东西。 我的问题是,我可以在查询之前不知道populate 神奇地 type objectId字段吗?

我知道我能做到:

History.query({...}).populate('objectId', null, 'User').exec(...);

但这需要我在构造查询时知道typeUser

显然,我可以在typeobjectId的情况下手动执行第二次查询。

例如,是否可以在运行时保存文档(而不是模式)的ref类型并利用它?我环顾四周,似乎找不到方法。

0 个答案:

没有答案