Ich versuche, ein Passwort direkt vor dem Speichern eines Dokuments zu hashen. Ich versuche, einen Hash zu generieren (was gut funktioniert) und dann das Passwort-Feld des Dokuments (ein String-Typ) mit dem neuen Hash-Passwort zu aktualisieren.Warum wird mein Mungo-Dokument innerhalb der bcrypt-Funktionen nicht korrekt aktualisiert?
Die Zeile user.password = hash
ändert jedoch nichts.
Ich überprüfe meine Datenbank und nichts hat sich geändert! Was noch seltsamer ist, ist, dass, wenn ich versuche, die Daten meines Dokuments außerhalb die Hash/bcrypt Funktionen zu ändern, funktioniert es gut.
Zum Beispiel, wenn ich mein Dokument mit dem Kennwort initialisieren „fake1“ und setzte dann user.password = "fakepassword"
außerhalb meiner Hashing-Funktionen, aktualisiert sie es in Ordnung ....
Warum ist das so? Ändert sich die Referenznummer this
, wenn Sie Hashfunktionen eingeben? Jedes Beispiel (ich habe stundenlang gesucht), das ich gesehen habe, ist genau wie meines ... Warum funktioniert meines nicht?
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);
});