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); 用你的用户对象作为参数。 现在它像一个魅力。