Как запросить вновь созданную модель с mon goose и Node.js? - PullRequest
0 голосов
/ 24 апреля 2020

Я создаю спортивный сайт, где пользователи могут создавать команды. Я хочу, чтобы новая созданная команда автоматически помещалась в массивы пользователей и лидеров. Но я не могу понять, как запросить вновь созданную Команду, как показано в коде ниже:

const Team = require('../models/Team.js')
const path = require('path')

module.exports = async (req,res)=>{
   await Team.create({
        ... req.body,
        teamName: req.body.teamname ,
        sportType: req.body.sporttype,
        description: req.body.description,
        location: req.body.location,
        members: [req.session.userId],
        leaders: [req.session.userId]
    });


        const user = await req.session.userId;
        const teams = //Request newly created Team
        await user.leadership.push(teams)
        await user.membership.push(teams)
        await user.save()
    res.redirect('/')

}

Вот схема для пользователя:

const UserSchema = new Schema({
    username: {
        type: String,
        required: true,
        unique: true 
    },
    password: {
        type: String,
        required: true
    },
    membership: [{ type: Schema.Types.ObjectId, ref: 'Team' }],
    leadership: [{type: Schema.Types.ObjectId, ref: 'Team'}]
});

Вот схема для команды:

const TeamSchema = new Schema({
    teamName: String,
    sportType: String,
    description: String,
    location: String,
    members: [{ type: Schema.Types.ObjectId, ref: 'User' }],
    leaders: [{type: Schema.Types.ObjectId, ref: 'User'}]
})

1 Ответ

0 голосов
/ 24 апреля 2020
module.exports = async (req,res)=>{
    const user = User.findById(req.session.userId)
    const teams = await Team.create({
        ... req.body,
        teamName: req.body.teamname ,
        sportType: req.body.sporttype,
        description: req.body.description,
        location: req.body.location,
        members: [req.session.userId],
        leaders: [req.session.userId]
    });
    await user.leadership.push(teams)
    await user.membership.push(teams)
    await user.save()
    res.redirect('/')
}

Попробуйте это. Также лучшим подходом будет создание различных функций для создания объекта и последующего его вызова здесь.

...