Я впервые использую sequelize и пытаюсь использовать хуки, и, кроме того, я только узнаю об обещаниях в JS.У меня есть два способа реализации функции, но мне интересно, если один асинхронный, а другой нет?
// METHOD 1
User.addHook("beforeCreate", (user) => {
user.password = bcrypt.hashSync(user.password, bcrypt.genSaltSync(8), null);
});
// METHOD 2
User.addHook("beforeCreate", (user, options) => {
return bcrypt.hashSync(user.password, bcrypt.genSaltSync(8), null)
.then(hashedPw => {
user.password = hashedPw;
});
});
Также, если кто-то знает, для чего нужен параметр 'options', метод 2 по существу взят из документации Sequelize, и у него есть параметр 'options', но я не вижу, где он используется ...
РЕДАКТИРОВАТЬ
Комментарии позволили мне понять, что вышеприведенные методы не являются асинхронными, поскольку они используют hashSync, поэтому я сделал новую реализацию, но это все равно приводит к тому, что нехэшированный пароль сохраняется в БД...
const saltRounds = 8;
User.addHook("beforeCreate", (user) => {
bcrypt.genSalt(saltRounds, function(err, salt) {
bcrypt.hash(user.password, salt, null, function(err, hash) {
user.password = hash;
});
});
});