在beforeUpdate上进行Sequelize验证错误

时间:2020-01-06 04:01:00

标签: javascript node.js sequelize.js

当我尝试更新用户密码时,我在续集上出现验证错误。

不应该在验证成功之后调用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可以正常工作...

谁能帮助我=(我会很感激的!

感谢您的时间!

0 个答案:

没有答案