我正在尝试将hometeam名称输出到页面,以便我可以尝试更好地理解如何使用我的代码。它只打印一个团队到页面,它将该团队的所有细节打印到页面,而我只想打印一个部分。
这是我的代码,我希望它将每个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的名字。由于hometeam只是我数据库中团队的objectId,我在这里错过了DBreferencing的内容吗?
更新
Team Schema
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);
答案 0 :(得分:0)
Populate获取您要检索的属性的属性名称。这意味着您应该使用'hometeam'而不是'hometeam.name'。但是,您想要检索团队的名称,以便可以对其进行过滤。然后电话会变成......
Match.findOne({}).populate('hometeam', {name: 1}).exec(function(err, teams)
现在你有了一个名为'hometeam'的属性。玩得开心:))
修改强>
展示如何在更多文件中安装单个mongoose实例以正确注册模式。
<强> app.js 强>
var mongoose = require('mongoose');
var Team = require('./schemas/team-schema')(mongoose);
var Match = require('./schemas/match-schema')(mongoose);
// You can only require them like this ONCE, afterwards FETCH them.
var Team = mongoose.model('Team'); // LIKE THIS
<强>模式/匹配schema.js 强>
module.exports = function(mongoose) {
var Match = new mongoose.Schema({
'key' : {
unique: true,
type: Number,
default: getId
},
'hometeam' : { type: mongoose.Schema.ObjectId, ref: 'Team' },
'awayteam' : { type: mongoose.Schema.ObjectId, ref: 'Team' }
});
return mongoose.model('Match', Match);
};
<强>架构/团队schema.js 强>
module.exports = function(mongoose) {
var Team = new mongoose.Schema({
'key' : {
unique : true,
type : Number,
default: getId
},
'name' : { type : String,
validate : [validatePresenceOf, 'Team name is required'],
index : { unique : true }
}
});
return mongoose.model('Team', Team);
};