Как отобразить список зарегистрированных участников турнира в моей коллекции регистров - PullRequest
0 голосов
/ 22 октября 2019

В настоящее время у меня есть коллекции 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

1 Ответ

0 голосов
/ 23 октября 2019

Решено, вот как я нахожу всех участников, которые зарегистрированы с определенным идентификатором объекта турнира.


router.get('/:id', function(req, res){
    Tournament.findById(req.params.id, function(err, tournament){
        User.findById(tournament.author, function(err, user){
            Register.find({tournamentId: req.params.id}, function(err, registers){
                if(err){
                    console.log(err);
                    return;
                }
                else{
                    res.render('tournament',{
                        tournament: tournament,
                        author: user.username,
                        user: req.user,
                        registers: registers,
                    });
                }
            })
        });
    });
});
``
...