mongoosepre保存bcrypt没有保存
我有一个问题与bcrypt和mongoose预存function。
我的日志告诉我,一切都很好哈希…但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
是我的预存function生成的哈希:
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(); });
没有错误打印,所以我真的不知道,这可能是我的错误。 有什么build议?
几个小时的debugging时间后,只是find解决我的问题:
在更改密码信息后,您需要return next(user);
用你的用户对象作为参数。 现在它像一个魅力。