Wie @Joe und @robertklep bereits erwähnt Sie in Zeile Ihre Fehler haben 63:
bcrypt.hash (newUser.password, Salz, (err, hash => {
weil variable Kennwort ist undefined. Versuchen Sie, es manuell zu definieren, und stellen Sie sicher, dass Code, was Sie geschrieben haben, ordnungsgemäß ausgeführt wurde
Aber ich empfehle Ihnen dringend, genau zu sehen at virtual field (in mongoose) und verwenden Sie es für die Generierung von Salz-Passwörter.
In Ihrem Fall könnten Sie den gleichen Job mit diesem Code-Snippet mit Mungo und Bcrypt tun.
// zunächst einmal umbenennen "Passwort" auf "clean_password" in Ihrem Schema
user.virtual('clean_password')
.set(function(clean_password) {
this._password = clean_password;
this.password = this.encryptPassword(clean_password);
})
.get(function() {
return this._password;
});
user.methods = {
/**
* Authenticate - check if the passwords are the same
*
* @param {String} plainText
*/
authenticate: function(plainPassword) {
return bcrypt.compareSync(plainPassword, this.password);
},
/**
* Encrypt password
*
* @param {String} password
*/
encryptPassword: function(password) {
if (!password)
return '';
return bcrypt.hashSync(password, 10);
}
};
und überprüfen Sie es über:
var user = {
username: "whateveryouwant",
clean_password: "whateveryouneed"
}
User.create(user, function(err,doc){});
Der Fehler erscheint über eine Variable nicht definiert zu beschweren ist Um Zeile 63 in user.js. Haben Sie darüber nachgedacht, mithilfe von console.log jede Variable an diesem Punkt auszugeben, um zu sehen, was jede Variable enthält? – Joe