需要数据和盐参数

时间:2018-09-26 01:25:24

标签: node.js mongoose bcrypt

我正在尝试在我的站点中哈希admin的密码。我进行搜索后发现,此错误是由于被nullundefined用作我们希望对其进行哈希处理的值而引起的。

这是我的代码,每当我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 :(得分:1)

在箭头功能中使用关键字this会更改范围。 See more here。在您的快速路由中这不是问题,但是在猫鼬中间件中却是问题。更改功能以不使用this或制作老式的function(){}