在续集模型问题中挂钩 '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);
}
});
我正在用 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);
}
});