我的架构看起来有点像:
var conversationSchema = new Schema({
created: { type: Date, default: Date.now },
updated: { type: Date, default: Date.now },
recipients: { type: [Schema.ObjectId], ref: 'User' },
messages: [ conversationMessageSchema ]
});
所以我的收件人集合是对象id引用我的用户架构/集合的集合。
我需要在查询中填充这些内容,所以我正在尝试这个:
Conversation.findOne({ _id: myConversationId})
.populate('user')
.run(function(err, conversation){
//do stuff
});
但显然'用户'没有填充......
我有办法做到这一点吗?
答案 0 :(得分:78)
对于其他遇到此问题的人来说,OP的代码在架构定义中有错误。它应该是:
var conversationSchema = new Schema({
created: { type: Date, default: Date.now },
updated: { type: Date, default: Date.now },
recipients: [{ type: Schema.ObjectId, ref: 'User' }],
messages: [ conversationMessageSchema ]
});
mongoose.model('Conversation', conversationSchema);
答案 1 :(得分:26)
使用架构路径的名称而不是集合名称:
Conversation.findOne({ _id: myConversationId})
.populate('recipients') // <==
.exec(function(err, conversation){
//do stuff
});