为了账号安全,请及时绑定邮箱和手机立即绑定

视频中两处可能出现的错误

1、这里倒数第一个next()应该去掉,否则加盐会失败。因为bcrypt.hash()的回调函数是一个异步操作,所以加盐和这个next()会同时执行,所以还没加盐完成就已经触发next()进行下一步了;

UserSchema.pre('save', function(next) {	
    var user = this;	
    if (this.isNew) {		
        this.meta.createAt = this.meta.updateAt = Date.now();	
    } else {		
        this.meta.updateAt = Date.now();	
    };
    bcrypt.hash(user.password, 10, function(err, hash) {		
        if (err) return next(err);		
        user.password = hash;		
        next();	
    })	
    next();//这个next()要去掉,否则加盐会失败
});

2、sinin路由里,User.find({})应该改为User.findOne({}),否则返回永远为null(可能是mongo版本原因)。

// signin
app.post('/user/signin', function(req, res) {	
var _user = req.body.user;	
var name = _user.name;	
var password = _user.password;	
User.findOne({name: name}, function(err, result) {		
if (err) { console.log(err); };		
if (result==null) {			
res.json({'message':'该用户不存在'});		
} else {			
result.comparePassword(password, function(err, isMatch) {				
if (err) { console.log(err); };				
if (isMatch) {					
res.redirect('/');				
} else {					
res.json({'message':'密码不正确'})				
}			
})		
}	
})
})


正在回答

举报

0/150
提交
取消
node建站攻略(二期)——网站升级
  • 参与学习       51938    人
  • 解答问题       408    个

帮助你深入前后端开发留下的迷惑,为进一步自学打下基础

进入课程

视频中两处可能出现的错误

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信