javascript - Sequelize 钩子(Hook)触发但不更改对象

标签 javascript sequelize.js

    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/

相关文章:

javascript - 在 Node.js 和 express-session 中更改和刷新 session 数据

mysql - 该数据库场景的最佳架构是什么?

mysql - Sequelizejs,创建索引时如何对字段值进行排序

model - 在 Sequelize 中使用模型和迁移

javascript - 查询 Sequelize 模型以匹配多个关联

javascript - 使用javascript计算组合框中的所有值

javascript - 如何将窗口设置为未定义以测试同构应用程序中的 SSR 渲染?

javascript - 验证文本区域中逗号分隔单词的字符数

javascript - 如何通过jquery触发器触发超链接?

javascript - Sequelize 验证错误 (isIn)