我正在使用nodejs / express / sequelize开发API。
实际上,当我创建用户帐户时。我得到了一个Hook'forecreate',它通过bcrypt来填充用户密码:
User.hook('beforeCreate', (user) => {
if (user.password) {
user.password = bcrypt.hashSync(user.password, bcrypt.genSaltSync(10), null);
}
});
其中user.password
是我在注册时提供的密码。
这部分运作良好。
其次,我有一个更新此用户帐户的功能。从逻辑上讲,我添加了一个'beforeUpdate':
User.hook('beforeUpdate', (user) => {
console.log(user);
if (user.password) {
user.password = bcrypt.hashSync(user.password, bcrypt.genSaltSync(10), null);
}
});
但是我遇到了一个问题,因为user.password
不是我在PATCH请求中提供的数据,而是我数据库中的哈希密码。
我猜这是模型密码而不是实例密码......我不知道。 如果有人可以帮助我获取查询值,那就太好了。
答案 0 :(得分:0)
您可以使用_previousDataValues
User.hook('beforeUpdate', (user) => {
console.log(user);
if (user.password) {
user.password = bcrypt.hashSync(user.previous.password, bcrypt.genSaltSync(10), null);
}
});