Почему мой var возвращается как неопределенный при добавлении .methods к нему? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь добавить bycrypt в таблицу аутентификации, но получаю сообщение об ошибке, что authTable не определена при попытке добавить методы generateHash и validPassword.Есть ли что-то, чего я не понимаю в части authTables.methods?

Код работает, когда я комментирую части generateHash и validPassword, что заставляет меня поверить, что .methods - это зависание.

var bcrypt = require("bcryptjs");

module.exports = function (sequelize, DataTypes) {
  var authTable = sequelize.define("authTable", {

    username: {
    type: DataTypes.STRING,
    allowNull: false,
    validate: {
      len: [1, 30]
    }
  },
  password: {
    type: DataTypes.STRING,
    allowNull: false,
    validate: {
      len: [6, 20]
    }
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    validate: {
      isEmail: true,
      len: [1]
    }
  }
});

authTable.methods.generateHash = function(password) {
  return bcrypt.hashSync(password, bcrypt.genSaltSync(10), null);
};

authTable.methods.validPassword = function(password) {
  return bcrypt.compareSync(password, this.local.password);
};

return authTable;
}

Я ожидаю, что это приведет к таблице в базе данных с зашифрованным паролем.

Я получаю следующие ошибки:

TypeError: Невозможно установить свойство 'generateHash' из неопределенного.

TypeError: Невозможно установить свойство 'validPassword' из неопределенного

1 Ответ

0 голосов
/ 09 февраля 2019

Я получаю сообщение об ошибке, что authTable не определен

Нет, вы этого не делаете.Вы получаете сообщение об ошибке, что authTable.methods не определено.

define возвращает экземпляр Model, и, как вы можете видеть в документации Model, это не такиметь свойство с именем methods, следовательно, authTable.methods будет иметь значение undefined.

...