Требуются данные и соленые аргументы - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь хешировать пароль администратора на моем сайте.Я искал и обнаружил, что эта ошибка из-за того, что null или undefined является значением, которое мы хотим хэшировать.

Вот мой код, всякий раз, когда я возвращаю console.log (admin), он возвращает{}, я не знаю почему.

adminSchema.pre('save', (next) => {
    var admin = this;
    console.log(admin)
    bcrypt.hash(admin.password, 10, (err, hash) => {
        if (err) return next(err);
        admin.password = hash;
        next();
    });
});

var adminModel = mongoose.model('Admin', adminSchema);
module.exports = adminModel;

код на стороне сервера:

var adminModel = require('./../models/admins');
router.post('/register', (req, res) => {
    var newAdmin = {
        adminName: req.body.adminName,
        faculty: req.body.faculty,
        email: req.body.email,
        password: req.body.password
    }

    adminModel.create(newAdmin, (err, admin) => {
        if (err) {
            console.log('[Admin Registration]: ' + err);
        }
        else {
            console.log('[Admin Registration]: Done');
            req.session.adminId = admin._id;
            res.redirect('/admin/submitScore')
        }
    })
});

К сожалению, я не могу найти причину этого console.log (admin) пустой.Буду благодарен, если кто-нибудь сможет мне помочь.

1 Ответ

0 голосов
/ 26 сентября 2018

Ключевое слово this изменяет область действия при использовании в функциях стрелок. Подробнее здесь .Это не проблема в вашем экспресс-маршруте, но в вашем промежуточном ПО mongoose это так.Измените свою функцию, чтобы не использовать this или сделать старомодным function(){}

...