文書の保存が呼び出される直前にパスワードをハッシュしようとしています。私はハッシュを生成しようとしています(うまく動作します)し、新しいハッシュされたパスワードでドキュメント(文字列型)のパスワードフィールドを更新します。私のmongoose文書がbcrypt関数の中で正しく更新されないのはなぜですか?
ただし、user.password = hash
行は何も変更されません。
私のデータベースをチェックしても何も変わりません!私の文書のデータをのhash/bcryptの外に変更しようとするとうまくいきます。私はパスワード「fake1」と私の文書を初期化してから、私のハッシュ関数のuser.password = "fakepassword"
外に置く場合例えば
は、それは罰金、それを更新....
それはなぜですか?ハッシュ関数を入力したら参照番号this
が変更されますか?私が見たすべての例(私は何時間も何時間も探しました)は私のものとまったく同じです...なぜ私の仕事はうまくいかないのですか?
userSchema.pre('save', function(next) {
var user = this; // i reference the doc by "this"
bcrypt.genSalt(SALT_WORK_FACTOR, function(err,salt){
if(err){
console.log("error with salt \n");
}
bcrypt.hash(user.password,salt,function(error,hash){
if (error){
console.log("error with hash \n");
}
user.password = hash; // this line doesn't do anything!
});
});
return next(user);
});