我有一个猫鼬模式:
mongoose.Schema({
state: {
type: {
action: 'string' ,
user: {type: mongoose.Schema.Types.ObjectId,
ref: 'User'},
at: 'date'
},
default: {}
},
log: [{
action: 'string' ,
user: {type: mongoose.Schema.Types.ObjectId,
ref: 'User'},
at: 'date'
}]
})
尝试填充
Model.findById(id).populate('state.user').populate('log.user').exec(cb)
在查询结果中,日志项的“user”字段正确填充,“state.user”为空。可能是什么问题?
答案 0 :(得分:2)
对于state
之类的简单嵌入对象,请在不使用type
的情况下定义结构:
mongoose.Schema({
state: {
action: 'string' ,
user: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
at: 'date'
},
log: [{
action: 'string' ,
user: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
at: 'date'
}]
})
populate('state.user')
应该可以正常使用。
答案 1 :(得分:1)
在您的架构中,您有state.type.user
,但您对populate
的来电是state.user
。填充调用中的路径与架构不匹配。
应为Model.findById(id).populate('state.type.user').populate('log.user').exec(cb)