Всякий раз, когда я ссылаюсь на элемент из другой коллекции и сохраняю его в своей коллекции пользователей, я не могу войти снова - PullRequest
0 голосов
/ 16 апреля 2020
const Club = require('../models/Club')
const User = require('../models/User')
const path = require('path')
module.exports = (req, res) => {
    if(!req.files){
        res.render('clubSignUp',  {
            error:"error"
        })
    }
    else {
        let image = req.files.image;

        image.mv(path.resolve(__dirname,'..','public/img',image.name), async (error) => {
            if(error){
                console.log("Error making image")
            }
            await Club.create({
                ...req.body,
                image: '/public/img/' + image.name
            }, async function(error, newlymade) {
                if(error){
                    console.log(error)
                    res.render('clubSignUp', {
                        error
                    })
                }
                else {
                    User.findById(req.session.userId, (error, user) => {
                        user.clubs.push(newlymade._id)
                        user.save()
                    })
                    //user.clubs.push(newlymade._id) 
                    console.log(newlymade._id)
                    res.redirect('/')
                }
            })
            //req.session.userId = user._id

        })
    }


}
This is the file where I store a "Club" and I am trying to store the id of the club into the user schema. This is so I can attach a specific club to a user for later use.

const UserSchema = new Schema ({
    firstName : {
        type: String,
        required: true
    },
    lastName : {
        type :String,
        required: true
    },
    email : {
        type :String,
        required:true
    },
    userName: {
        type: String,
        required: true,
        unique: true
    },
    password : {
        type: String,
        required: true,
    },
    major :{
        type : String,
        required: true
    },
    gradYear : {
        type :String,
        required: true
    },
    clubs :[String],
    image : String
})

Это пользовательская схема, и я храню клубы в виде массива строк, и этот массив содержит идентификатор созданных пользователем клубов

const bcrypt = require('bcrypt')
const User = require('../models/User')
const{check, validationResult} = require('express-validator')
module.exports = (req, res) => {
    const {userName, password} = req.body;
    //console.log(userName)
    User.findOne({userName:userName}, (error, user) => {
        //console.log(user)
        if(user) {
            bcrypt.compare(password, user.password, (error, same) => {
                if(same) {
                    req.session.userId = user._id
                    res.redirect('/')

                }
                else {
                    error = "Invalid Login"
                    res.render('login', {
                        error: "Invalid Login"
                    })
                    console.log(error)
                }
            })
        }
        else {
            console.log(error)
            res.render('login', {
                error : "Invalid Login"
            })


        }
    })
}

Наконец, вот как пользователь проверен для входа в систему. Раньше у меня не было проблем с этим, вход в систему пользователя работает идеально, пока я не добавлю клуб, и он не будет добавлен в схему пользователя. Застрял на этом часами: / Заранее спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...