Я пытался решить эту проблему около 4 часов, и я не могу найти способ ее решить. У меня есть 3 модели, которые выглядят следующим образом:Запутывание Mongoose взаимосвязано Модели
1-ый один мой турнир модель:
var tournamentSchema = mongoose.Schema({
tournamentName: String,
nrOfPlayers: String,
players: [{
type: mongoose.Schema.Types.ObjectId, ref: "User" }],
openForLeagues: {
"leagues" : []
},
organizer: [{
type: mongoose.Schema.Types.ObjectId, ref: "User"
}]
});
2-я одна моя модель Пользователь:
var userSchema = mongoose.Schema({
local : {
nickname: String,
battlenetid: String,
email: String,
password: String,
race: String,
league: String,
role: String,
website: String,
avatarImage: String,
tournaments: [{
type: mongoose.Schema.Types.ObjectId, ref: "Tournament"
}],
avatar: [{
type: mongoose.Schema.Types.ObjectId, ref: "Avatar"
}]
}
});
И третий один это моя Аватар модель:
var avatarSchema = mongoose.Schema({
imageName: String,
imageRaceCategory: String,
imagePath: String
});
Что я пытаюсь сделать, это найти турнир, основанный на его идентификатор, а затем заполнить игрока массив, а также аватар для каждого игрока, участвующего в этом турнире. Тем не менее, я получаю undefined, когда я пытаюсь отображать аватары для игроков.
Это как мой запрос выглядит следующим образом:
Tournament.findById(req.params._id).populate('players organizer players.local.avatar').exec(function(err, tournament){
if(err){
res.send(err)
}else{
helperFunctions.getUserDetails(req.params.userId, function(user){
res.render('tournament/tournament-details.ejs',{
user: req.user,
tournament: tournament,
userAvatar: user,
moment: moment,
enlistedInTournament: enlistedInTournament,
eligibleForTournament: eligibleForTournament,
allPlacesTaken: allPlacesTaken,
procentajOcupare: (tournament.players.length * (100/tournament.nrOfPlayers))
});
});
}
});
И это, как я отобразить его в виде:
<%tournament.players.forEach(function(player){%>
<img src="<%=player.local.avatar.imagePath + '/' + player.local.avatar.imageName"%>/>
<li>
<%= player.local.nickname + ', ' + player.local.race + ', ' + player.local.league%>, <a href="/profile-details/<%= player._id%>">Profil jucator</a>
</li>
<%});%>
Однако я получаю не определено для avatar.imagePath и аватар. imageName, все остальное отлично работает. Есть лучший способ сделать это? Что я пропущу/делаю неправильно? Заранее спасибо!
Спасибо, Витор! – war81