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

Hook 'beforeUpdate' in a sequelize model issue

我正在用 nodejs/express/sequelize 开发一个 API。

实际上是在我创建用户帐户时。由于 bcrypt,我得到了一个 Hook 'beforeCreate' 来散列用户密码:

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 请求中提供的数据,而是我数据库中的散列密码。

我猜这是模型密码而不是实例密码...我不知道。 如果有人能帮我得到查询值就好了。

您可以使用 _previousDataValues

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