在续集模型问题中钩'beforeUpdate'

时间:2018-06-01 16:58:39

标签: javascript node.js sequelize.js hook

我正在使用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请求中提供的数据,而是我数据库中的哈希密码。

我猜这是模型密码而不是实例密码......我不知道。 如果有人可以帮助我获取查询值,那就太好了。

1 个答案:

答案 0 :(得分:0)

您可以使用_previousDataValues

User.hook('beforeUpdate', (user) => {
console.log(user);
if (user.password) {
  user.password = bcrypt.hashSync(user.previous.password, bcrypt.genSaltSync(10), null);
}
});