当我尝试更新用户密码时,我在续集上出现验证错误。
不应该在验证成功之后调用beforeUpdated吗?
const config = require('../config/config');
// Encrypters
const bcrypt = require('bcrypt');
const Cryptr = require('cryptr');
const cryptr = new Cryptr(config.key);
const saltRounds = over 99999 muchas rondas :'( ;
module.exports = (sequelize, DataTypes) => {
const users = sequelize.define('users', {
id: {
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
user_login: {
type: DataTypes.STRING,
allowNull: false
},
user_pass: {
type: DataTypes.STRING,
validate: {
// SIMPLE REGEX VALIDATOR
is: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z_.\d]{8,16}$/i <----- IMPORTANT STUFF
}
},
user_email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
isEmail: true
}
},
user_rol: DataTypes.INTEGER,
user_status: DataTypes.STRING,
user_forum_auth: DataTypes.STRING,
user_verification_key: DataTypes.STRING,
user_profile_image: DataTypes.STRING,
user_description: DataTypes.STRING
});
users.beforeCreate((user, options) => {
const salt = bcrypt.genSaltSync(saltRounds);
user.user_pass = bcrypt.hashSync(user.user_pass, salt);
});
users.beforeUpdate((user, options) => { <-- FUNCTION THAT HATES IMPORTANT STUFFs
console.log('password enviada: ' + user.user_pass);
const salt = bcrypt.genSaltSync(saltRounds);
user.user_pass = bcrypt.hashSync(user.user_pass, salt);
console.log('password hashada: ' + user.user_pass);
});
return users;
};
很明显,我发送的密码对于请求的REGEX有效,但是当我出于某种原因尝试进行哈希处理时,我认为验证程序正在尝试读取无效的哈希化密码。
"message": "Ocurrio un error al actualizar el usuario SequelizeValidationError: Validation error: Validation is on user_pass failed"
我可以提到beforeCreate可以正常工作...
谁能帮助我=(我会很感激的!
感谢您的时间!