【发布时间】:2014-10-23 05:45:39
【问题描述】:
我正在尝试使用 mongoose 定义一个 mongo Schema。我需要创建一个引用用户的“事件架构”。因此,我使用用户架构的引用 ObjectId 填充“用户”字段。但是,我还需要在该用户属性上添加一些特定于事件的额外字段。所以像下面这样:
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 作为配置文件属性,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) {....
【问题讨论】:
-
“这不起作用”。请准确
-
我已经编辑了这个问题。见上文。
-
你可以试试
populate('users.profile') -
太棒了,成功了!谢谢!!
标签: javascript node.js mongodb express mongoose