Sto tentando di utilizzare il metodo di istanza di Sequelize per convalidare una password al tentativo di accesso. Ho definito il modello User come:Sequenza dei metodi di istanza non funzionanti
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;
}
Nel mio percorso di accesso faccio la seguente:
- 1) Recuperare il nome utente & password dalla richiesta corpo
- 2) Controllare se il nome utente esiste in database
- 3) Se l'utente esiste, ottiene l'oggetto utente e confronta la password inviata con la password con hash nel database utilizzando il metodo validatePassword.
Ecco il codice relativo
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));
}
....
Ogni volta che cerco di login ricevo il seguente errore
[TypeError: user.validatePassword is not a function]
Che cosa sto facendo di sbagliato?
Sei sicuro 'user' non è nulla? –
@Hopeful Llama nope posso *** console.log (utente) *** e recuperare tutte le informazioni –