0
我想輸出只是hometeam名稱的頁面,以便我可以嘗試瞭解如何更好地處理我的代碼。它只打印一個團隊到頁面,並將該團隊的所有細節打印到頁面,而我只希望打印一個部分。Mongoose .populate()只顯示1個文檔
這是我的代碼,我希望它打印的名字的每個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只是我數據庫中Team的objectId,我在這裏錯過了DBreferencing的一些東西嗎?
更新:
團隊架構
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);
感謝回覆。這給了我''hometeam「:null,'在回覆中,仍然只給了我一個數據。請查看原始文章末尾的更新,我不確定爲什麼,但是如果我嘗試打印「hometeam」的名稱,則出現該錯誤,「hometeam」存儲「Team」的「ObjectId」存儲在那裏。那麼我將如何去取回那個'團隊'的名字? – germainelol
@germainelol你願意更新你的問題與團隊和匹配的計劃?可能有一個錯誤的引用(ref變量)或者指向的ObjectId不存在。我懷疑前者,但這兩者都可能是一個問題。 –
我已經這樣做了,感謝您的幫助。 – germainelol