我正在尝试使用mongoose定义一个mongo Schema。我需要创建一个引用用户的“事件模式”。所以我使用用户Schema的引用ObjectId填充'users'字段。但是,我还需要在该用户属性上添加一些特定于该事件的额外字段。如下所示:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var EventSchema = new Schema({
name: String,
date: Date,
users: [{
profile: {
type: Schema.ObjectId,
ref: 'User'
},
RankNumber: Number,
bibNumber: Number
}],
published: Boolean
});
mongoose.model('Event', EventSchema);
然而,这不起作用。我不确定做我想要达到的目标的最好方法。
所以,如果我有一个构造函数,如:
function User(bib, rank, profile) {
this.bib = bib;
this.rank = rank;
this.profile = profile;
}
然后我调用该构造函数并传入一个用户id作为profile属性,MongoDB将创建一个新的id字段。我得到像这样的JSON响应:
{
"name": "Event name",
"_id: "mongoid",
"users": [
{
"bibNumber": "278",
"rankNumber": "21",
"profile": "users mongo _id number",
"_id": "a new mongo _id"
}
]
}
我需要填充个人资料字段。但以下情况不起作用:
Event.find()。populate('users')。exec(function(err,events){....
答案 0 :(得分:0)
你必须使用,正如我在评论中所说:
Event.find(...).populate('users.profile').exec(...);