Ich versuche die Sequelize-Instanzmethode zu verwenden, um ein Passwort beim Anmeldeversuch zu validieren. ich die User-Modell definiert haben:Sequelize-Instanzmethoden funktionieren nicht
var User = sequelize.define('User',{
id:{
type:DataTypes.BIGINT,
autoIncrement: true,
allowNull: false,
primaryKey:true
},
username:{
type:DataTypes.STRING,
unique:true
},
password:{
type: DataTypes.STRING
},
...
},
{
classMethods:{
associate:function(models){
...
}
}
},
{
instanceMethods:{
validatePassword:function(password){
return bcrypt.compareSync(password, this.password);
}
}
}
);
return User;
}
In Anmeldungs Route kann ich folgendes:
- 1) Abrufen von Benutzernamen & Passwort von der Anfrage Körper
- 2) Überprüfen Sie, ob Benutzername existiert in Datenbank
- 3) Wenn Benutzer vorhanden ist, erhalten Sie ein Benutzerobjekt und vergleichen Sie das gesendete Kennwort mit dem Hash-Kennwort in der Datenbank mit der validatePassword-Methode. Hier
ist der entsprechende Code
var username = req.body.username || "";
var password = req.body.password || "";
models.User.findOne({ where: {username: username} }).
then(
function(user) {
if(user){
console.log(user.validatePassword(password));
}
....
Jedes Mal, wenn ich versuche ich, um sich einzuloggen die folgende Fehler
[TypeError: user.validatePassword is not a function]
Was mache ich falsch?
Sind Sie sicher, dass 'user' ist nicht null? –
@Hopeful Lama Nö kann ich *** console.log (Benutzer) *** und alle Informationen abrufen –