mongoose预先保存的bcrypt未保存

时间:2015-11-01 02:55:47

标签: javascript node.js mongodb mongoose bcrypt

我遇到了bcrypt和mongoose预保存功能的问题。

我的日志告诉我,一切都很好......但是mongoose没有正确保存新的哈希密码。

do post save 6BYpYJtD POST /api/v1/user 200 26.999 ms - 387 do pre save 6BYpYJtD $2a$10$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO

说清楚: 6BYpYJtD是我生成的密码,$2a$10$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO是我的预存储功能生成的哈希:

UserSchema.pre('save', function(next){
    var user = this;
        user.updated_at = Date.now;
    if(user.isModified('password'))
    {
        bcrypt.genSalt(SALT_WORK_FACTOR,function(err,salt){
            if(err) return next(err);
            bcrypt.hash(user.password,salt,function(err,hash){
                if(err) return next(err);
                console.log('do pre save',user.password,hash);
                user.password = hash;
                console.log(user.password);
                next();
            });
        });
    }

    return next();
});

没有打印错误,所以我真的不知道,这可能是我的错误。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

以后几个小时的调试时间,只是找到了我的问题的解决方案:

更改密码信息后,您需要return next(user);并将用户对象作为参数。现在它就像一个魅力。