将BCrypt与Sequelize模型一起使用

我正在尝试将bcrypt-

nodejs包与我的sequelize模型一起使用,并试图遵循将散列合并到模型中的教程,但是在遇到错误generateHash。我似乎无法弄清楚这个问题。有没有更好的方法来合并bcrypt?

错误:

/Users/user/Desktop/Projects/node/app/app/models/user.js:26

User.methods.generateHash = function(password) {

^

TypeError: Cannot set property 'generateHash' of undefined

at module.exports (/Users/user/Desktop/Projects/node/app/app/models/user.js:26:27)

at Sequelize.import (/Users/user/Desktop/Projects/node/app/node_modules/sequelize/lib/sequelize.js:641:30)

模型:

var bcrypt = require("bcrypt-nodejs");

module.exports = function(sequelize, DataTypes) {

var User = sequelize.define('users', {

annotation_id: {

type: DataTypes.INTEGER,

autoIncrement: true,

primaryKey: true

},

firstName: {

type: DataTypes.DATE,

field: 'first_name'

},

lastName: {

type: DataTypes.DATE,

field: 'last_name'

},

email: DataTypes.STRING,

password: DataTypes.STRING,

}, {

freezeTableName: true

});

User.methods.generateHash = function(password) {

return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);

};

User.methods.validPassword = function(password) {

return bcrypt.compareSync(password, this.local.password);

};

return User;

}

回答:

应在以下方法的“选项”自变量中提供方法sequelize.define

const bcrypt = require("bcrypt");

module.exports = function(sequelize, DataTypes) {

const User = sequelize.define('users', {

annotation_id: {

type: DataTypes.INTEGER,

autoIncrement: true,

primaryKey: true

},

firstName: {

type: DataTypes.DATE,

field: 'first_name'

},

lastName: {

type: DataTypes.DATE,

field: 'last_name'

},

email: DataTypes.STRING,

password: DataTypes.STRING

}, {

freezeTableName: true,

instanceMethods: {

generateHash(password) {

return bcrypt.hash(password, bcrypt.genSaltSync(8));

},

validPassword(password) {

return bcrypt.compare(password, this.password);

}

}

});

return User;

}

以上是 将BCrypt与Sequelize模型一起使用 的全部内容, 来源链接: utcz.com/qa/398300.html

回到顶部