2016-05-09 4 views
6

Я пытаюсь использовать метод экземпляра Sequelize для проверки пароля при попытке входа в систему. Я определил модель пользователя как:Невозможно обработать методы экземпляра exquery

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; 
} 

В моей входа маршрута я сделать следующее:

  • 1) Получить имя пользователя & пароль из тела запроса
  • 2) Проверьте, если имя пользователя существует в база данных
  • 3) Если пользователь существует, получить объект пользователя и сравнить отправленный пароль с хешированным паролем в базе данных с использованием метода validatePassword.

Вот соответствующий код

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)); 
    } 
.... 

Каждый раз, когда я пытаюсь войти я получаю следующее сообщение об ошибке

[TypeError: user.validatePassword is not a function] 

Что я делаю неправильно?

+0

Вы уверены, что 'user' не равно нулю? –

+0

@Hopeful Llama nope я могу *** console.log (пользователь) *** и получить всю информацию –

ответ

5

Как я полагаю вы используете неверное определение модели seelize. http://docs.sequelizejs.com/en/latest/docs/models-definition/#expansion-of-models

Это правильный путь:

var User = sequelize.define('User',{}, { 
    classMethods: { 
    method1: ... 
    }, 
    instanceMethods: { 
    method2: ... 
    } 
}); 
не

нравится:

var User = sequelize.define('User',{}, { 
    classMethods: { 
    method1: ... 
    } 
},{ 
    instanceMethods: { 
    method2: ... 
    } 
}); 
+0

Да, это исправлено! Благодаря!! –

Смежные вопросы