Sequelize.js 在Sequelize中进行批量创建时,如何触发beforeCreate钩子?

Sequelize.js 在Sequelize中进行批量创建时,如何触发beforeCreate钩子?,sequelize.js,Sequelize.js,我在Sequelize模型中有一个beforeCreate钩子(在User表中的密码上运行bcrypt),我想在种子文件中创建一个用户。像bulkCreate这样的函数只需插入数据库,因此不调用任何挂钩(包括createdAt/updatedAt)。我如何创建以匹配播种机所需格式的方式调用的钩子 似乎很多人只是在使用续集装置?这是路吗?或者我可以忽略种子格式,使用标准的.create/.build和.save格式 此外,与播种相关的文档位于何处?谷歌搜索的信息量非常小。在创建时将individu

我在Sequelize模型中有一个
beforeCreate
钩子(在
User
表中的密码上运行bcrypt),我想在种子文件中创建一个用户。像bulkCreate这样的函数只需插入数据库,因此不调用任何挂钩(包括
createdAt
/
updatedAt
)。我如何创建以匹配播种机所需格式的方式调用的钩子

似乎很多人只是在使用
续集装置
?这是路吗?或者我可以忽略种子格式,使用标准的.create/.build和.save格式


此外,与播种相关的文档位于何处?谷歌搜索的信息量非常小。

在创建时将
individualHooks
选项设置为true,如下所示:

User.bulkCreate(users, {individualHooks: true}).then(function() {
  console.log("Done!");
});
有一些关于这个选项的文档

此外,如果您允许用户更改密码,还应在更新前添加
钩子。您可以通过以下方式防止bcrypt对密码进行两次处理(当更新除密码以外的用户属性时):

function hashPassword(user, options, fn) {
  //Don't hash if password is already hashed
  if (user.dataValues.password.indexOf('$2a$') === 0) {
    fn(null, user);
    return;
  }

  bcrypt.hash(user.password, 10, function(err, hash) {
    if (err) {
      console.log('Error while generating hash!');
      fn(err, null);
      return;
    }
    user.password = hash;
    fn(null, user);
  });
}