В настоящее время у меня есть коллекции User, Tournament и Register. Пользователь регистрируется на Турнире, где некоторые детали Пользователя будут храниться в коллекциях Регистра. Как мне зарегистрировать всех пользователей с определенным идентификатором объекта Турнира?
Схема турнира
let TournamentSchema = mongoose.Schema({
title:{
type: String,
required: true
},
size:{
type: Number,
required: true
},
type:{
type: String,
required: true
},
author:{
type: String,
required: true
},
body:{
type: String,
required: true
},
date: { type: Date, default: Date.now }
});
Схема пользователя
const UserSchema = mongoose.Schema({
username:{
type: String,
},
profileURL:{
type: String,
},
profileImageURL:{
type: String,
},
steamId:{
type: String,
},
profileCountry:{
type: String
},
profileCreated:{
type: Date
},
userFullName:{
type: String
},
profileClan:{
type: String
},
date: { type: Date, default: Date.now }
});
Схема регистрации
let RegisterSchema = mongoose.Schema({
tournamentId:{
type: String,
required: true
},
tournamentName:{
type: String,
required: true
},
playerId:{
type: String,
required: true
},
playerSteamId:{
type: String,
required: true
},
playerUsername:{
type: String,
required: true
},
playerName:{
type: String,
require: true
},
playerContact:{
type: String,
required:true
},
date: { type: Date, default: Date.now }
});
Это способ, которым я сохраняю информацию о Пользователе в коллекции Register.
router.post('/submit', ensureAuthenticated, function(req, res){
Tournament.findOne({tournament: req.tournament}, function(err,tournament){
req.checkBody('playerName', 'Full name is required').notEmpty();
req.checkBody('playerContact', 'Contact number is required').notEmpty();
req.checkBody('tournamentId', 'Tournament id is required').notEmpty();
req.checkBody('tournamentName', 'Tournament name is required').notEmpty();
req.checkBody('playerId', 'Player id is required').notEmpty();
req.checkBody('playerUsername', 'Player username is required').notEmpty();
req.checkBody('playerSteamId', 'Player steam id is required').notEmpty();
let errors = req.validationErrors();
if(errors){
res.render('register_tournament', {
errors: errors,
user: req.user,
tournament: tournament
});
}
else{
let register = new Register();
register.tournamentId = req.body.tournamentId;
register.tournamentName = req.body.tournamentName;
register.playerId = req.body.playerId;
register.playerUsername = req.body.playerUsername;
register.playerSteamId = req.body.playerSteamId;
register.playerName = req.body.playerName;
register.playerContact = req.body.playerContact;
register.save(function(err){
if(err){
console.log(err);
return;
}
else{
req.flash('success', 'User registered');
res.redirect('/');
}
});
}
});
});
Таким образом, в моем файле tour.pug я хотел показать список зарегистрированных пользователей каждого идентификатора объекта Турнира. Как мне этого добиться? Ниже представлен роутер, который будет рендерить файл tour.pug
router.get('/:id', function(req, res){
Tournament.findById(req.params.id, function(err, tournament){
User.findById(tournament.author, function(err, user){
res.render('tournament',{
tournament: tournament,
author: user.username,
user: req.user,
});
});
});
});
. А вот и мой файл tour.pug
.row
.col-md-12
.card
.card-body
strong Participants List
br
br