无法在Sequelize钩子中保存

时间:2016-06-26 02:31:28

标签: sequelize.js bcrypt

我在Sequelize中使用了bcrypt-nodejs。我在尝试在将guest虚拟机对象持久保存到数据库之前散列访客的密码,但无法弄清楚为什么这不会保存到我的数据库中:

Guest.beforeCreate(function(guest) {
  bcrypt.genSalt(10, function(error, salt) {
    if (error) { return error }
    bcrypt.hash(guest.password, salt, null, function(error, hash) {
      if (error) { return error }
      guest.password = hash;
    })
  })
});

但是,这样做:

Guest.beforeCreate(function(guest) {
  guest.password = "something";
});

感谢。

1 个答案:

答案 0 :(得分:0)

意识到Sequelize提供了.save()方法。

这现在可以运行并持久存储到数据库中:

Guest.beforeCreate(function(guest) {
  bcrypt.genSalt(10, function(error, salt) {
    if (error) { return error }
    bcrypt.hash(guest.password, salt, null, function(error, hash) {
      if (error) { return error }
      guest.password = hash;
      guest.save(); // Added this line to get it to save.
    })
  })
});