我正在尝试仅将主队名称输出到页面,以便我可以尝试了解如何更好地使用我的代码。它只将一个团队打印到页面上,并将该团队的所有详细信息打印到页面上,而我只希望它打印一个部分。
这是我的代码,我希望它将每个人的名称打印hometeam
到页面上
app.get('/home', function(req, res) {
Match.findOne({}).populate('hometeam.name').exec(function(err, teams){
util.log(teams);
res.send(teams);
});
});
但是当我加载页面时,我得到的只是这个匹配列表中的第一条数据
[
{
"hometeam": "5106e7ef9afe3a430e000007",
"_id": "5113b7ca71ec596125000005",
"__v": 0,
"key": 1360246730427
},
{
"hometeam": "5113c13e0eea687b28000001",
"_id": "5113e951354fe70330000001",
"__v": 0,
"key": 1360259409361
},
{
"hometeam": "5113c13e0eea687b28000001",
"_id": "5113e999354fe70330000002",
"__v": 0,
"key": 1360259481412
}
]
另外,如果我尝试输入,util.log(teams.hometeam.name)
我会得到以下信息:
TypeError: Cannot call method 'toString' of undefined
但我希望它能够在此处打印属于主队的名称。由于 hometeam 只是我的数据库中 Team 的 objectId,我在这里的 DBreference 是否遗漏了一些东西?
更新:
团队架构
var Team = new Schema({
'key' : {
unique : true,
type : Number,
default: getId
},
'name' : { type : String,
validate : [validatePresenceOf, 'Team name is required'],
index : { unique : true }
}
});
module.exports.Schema = Team;
module.exports.Model = mongoose.model('Team', Team);
匹配模式
var Team = require('../schemas/Team').Schema;
var Match = new Schema({
'key' : {
unique: true,
type: Number,
default: getId
},
'hometeam' : { type: Schema.ObjectId, ref: 'Team' },
'awayteam' : { type: Schema.ObjectId, ref: 'Team' }
});
module.exports = mongoose.model('Match', Match);