Крюк 'beforeUpdate' в проблеме сиквелизированной модели - PullRequest
0 голосов
/ 01 июня 2018

Я разрабатываю API с помощью nodejs / express / sequelize.

На самом деле, когда я создаю учетную запись пользователя.Я получил хук 'beforeCreate', который хэширует пароль пользователя благодаря 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 голосов
/ 04 июня 2018

Вы можете использовать _previousDataValues

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