我正在尝试将bycrypt添加到身份验证表中,但是在尝试添加generateHash和validPassword方法时遇到错误,提示authTable未定义。关于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'
答案 0 :(得分:0)
我收到未定义authTable的错误
不,你不知道。您收到错误消息authTable.methods
未定义。
define
返回一个Model
的实例,正如您在the documentation of Model
中所看到的,它没有名为methods
,ergo,authTable.methods
的属性将得出undefined
。