Я пытаюсь хэшировать пароль для пользователей при создании записи и когда пользователь обновляет свой пароль. При создании я могу сделать что-то вроде
User.beforeCreate((user, options) => {
user.password = encryptPassword(user.password)
})
Который будет легко выполняться и хешировать пароль для новых пользователей. Но у меня проблема при обновлении пароля. Если я просто сделаю
User.beforeUpdate((user, options) => {
user.password = encryptPassword(user.password)
})
затем каждый раз, когда пользователи обновляют свою запись (т. е. обновляют имя, адрес и т. д.), он запускает ловушку и повторно хеширует пароль.
Как я могу узнать, когда пароль изменен, чтобы я мог активировать хук? Кроме того, вместо этих двух хуков, как я могу просто использовать beforeSave для достижения того же результата?
ОБНОВЛЕНИЕ
В соответствии с запросом мое определение пользователя так же просто, как
sequelize.define(
'user',
{
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
},
emailAddress: {
field: 'email_address',
type: Sequelize.STRING,
allowNull: false,
unique: true,
validate: {
isEmail: {
args: true,
msg: "Email is not valid"
}
},
},
password: {
type: Sequelize.STRING,
allowNull: false,
validate: {
min: {
args: 6,
msg: "Password must be more than 6 characters"
}
}
}
}
)