我一直在尝试创建一个身份验证系统并遇到问题。创建用户时,我的用户模型中的哈希函数运行一次,然后保存到我的数据库中。当我更新用户(使用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;
});
}
}