I have a simple user model with 2 hooks.
User.beforeCreate(setSaltAndPass)
User.beforeUpdate(setSaltAndPass)
the first works perfectly but the beforeUpdate does not run, according to the documentation you should have no problem executing the following
await User.update(user, {
where: {
id
}
})
is saving the key as plain text, it does not happen for example with the create. Curiously beforeBulkUpdate is executed when it is updated.
this is the callback, the detail is that in bulk I don't have the changed property or at least I don't know how to access it.
const setSaltAndPass = user => {
if (user.changed('pass')) {
user.salt = User.generateSalt()
user.pass = User.encriptPass(user.pass(), user.salt())
}
}
does its job, but hook its not excecuted.
I had the same issue in TS just now. Turn out, that the
@BeforeUpdatehook is triggered, when you first find a single record and then update it:In case you prefer the
Model.update(...)approach, you can use the@BeforeBulkUpdatehook instead.Found this info here: https://github.com/sequelize/sequelize/issues/6253
This worked for me, hope it helps!