gpt4 book ai didi

sequelize.js - 在 Sequelize 中进行 bulkCreating 时如何触发 beforeCreate Hook ?

转载 作者:行者123 更新时间:2023-12-04 14:56:48 27 4
gpt4 key购买 nike

我有一个 beforeCreate Hook Sequelize 模型(对 User 表中的密码运行 bcrypt),并希望在种子文件中创建用户。像 bulkCreate 这样的函数只是插入到数据库中,所以不调用任何钩子(Hook)(包括 createdAt/updatedAt )。如何使用与播种机所需格式匹配的方式调用 Hook 来创建?

似乎很多人只是在使用 sequelize-fixtures ?这是要走的路吗?或者我可以忽略种子格式,并使用标准的 .create/.build 和 .save 格式?

另外,与播种相关的文档在哪里?谷歌搜索在信息方面相当轻。

最佳答案

设置individualHooks bulkCreating 时选项为 true,如下所示:

User.bulkCreate(users, {individualHooks: true}).then(function() {
console.log("Done!");
});

有一些关于此选项的文档 here .

此外,如果您允许用户更改密码,您应该添加 beforeUpdate钩也。您可以通过以下方式防止密码被 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);
});
}

关于sequelize.js - 在 Sequelize 中进行 bulkCreating 时如何触发 beforeCreate Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35346563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com