Sequelize哈希函数无理由地调用两次

时间:2018-06-09 07:36:12

标签: javascript node.js database express sequelize.js

我一直在尝试创建一个身份验证系统并遇到问题。创建用户时,我的用户模型中的哈希函数运行一次,然后保存到我的数据库中。当我更新用户(使用models-save())时,哈希函数运行两次,我无法找到原因。有人可以帮我看看吗?

//具有哈希函数的用户模型。

Valid trees:
a)
      A              
     / \             
    B   C               
         \
          D
         / \
        E   F

b)

      K -> E
     / \
    G   B
   /|\ 
  H I J


Invalid tree (closed loop)
      A             
     / \ 
    B   C<----\
         \     |
          D   /
         / \ /
        E   F
             \
              G
             /|\
            H I J

//调用函数的位置:

var user = connection.define('user', {
    username: {
        type: Sequelize.STRING,
        allowNull: false,
        validate: {
          len: [4,15]
        }
    },

    password: {
        type: Sequelize.STRING,
        allowNull: false,
        validate: {
          len: [8,100]
        }
    }
  }, {
    instanceMethods: {
        comparePasswords: comparePasswords
    },
    hooks: {
        beforeValidate: hashPassword
    }
  });


  return user;
}

//Hashes the password for a user object.
function hashPassword(user) {
    if(user.changed('password')) {
      return bcrypt.hash(user.password, 10).then(function(password) {
            user.password = password;
        });
    }
}

0 个答案:

没有答案