我的架构有一个可以引用不同架构的字段。
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(...);
但这需要我在构造查询时知道type
是User
。
显然,我可以在type
和objectId
的情况下手动执行第二次查询。
例如,是否可以在运行时保存文档(而不是模式)的ref
类型并利用它?我环顾四周,似乎找不到方法。