User.addHook('beforeCreate', (user,options) => {
console.log('hook fired');
console.log(user);
bcrypt.genSalt(saltRounds, (err,salt) => {
bcrypt.hash(user.get('password'),salt, (err,hash) => {
user.set('password',hash);
});
});
});
我有一个sequelize钩子(Hook),由于消息和用户被记录,它肯定会触发。但是,在插入后引用数据库时,我的密码未经过哈希处理。
最佳答案
如果您正在执行异步操作(就像您一样),您应该在 Hook 内返回一个 promise 。
function getHash(user) {
return new Promise((resolve, reject) => {
bcrypt.genSalt(saltRounds, (err,salt) => {
bcrypt.hash(user.get('password'),salt, (err,hash) => {
resolve(hash);
});
});
});
}
User.addHook('beforeCreate', (user,options) => {
console.log('hook fired');
console.log(user);
return getHash(user)
.then(hash => user.set('password', hash))
});
关于javascript - Sequelize 钩子(Hook)触发但不更改对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419784/