I'm trying to use the bcrypt-nodejs
package with my sequelize model and was tring to follow a tutorial to incorporate the hashing into my model, but I'm getting an error at generateHash
. I can't seem to figure out the issue. Is there a better way to incorporate bcrypt?
Error:
/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)
model:
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; }
Methods should be provided in the "options" argument of 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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With