Mic*_*ino 9 javascript node.js express sequelize.js sequelize-hooks
我有一个带有 2 个钩子的简单用户模型。
User.beforeCreate(setSaltAndPass)
User.beforeUpdate(setSaltAndPass)
Run Code Online (Sandbox Code Playgroud)
第一个工作完美,但 beforeUpdate 不运行,根据文档,执行以下命令应该没有问题
await User.update(user, {
where: {
id
}
})
Run Code Online (Sandbox Code Playgroud)
将密钥保存为纯文本,例如在创建时不会发生这种情况。奇怪的是beforeBulkUpdate是在更新的时候执行的。
这是回调,详细信息是我没有更改的属性,或者至少我不知道如何访问它。
const setSaltAndPass = user => {
if (user.changed('pass')) {
user.salt = User.generateSalt()
user.pass = User.encriptPass(user.pass(), user.salt())
}
}
Run Code Online (Sandbox Code Playgroud)
完成它的工作,但钩子它没有执行。
小智 12
individualHooks: true,
在选项块中设置
await User.update(user, {
where: {
id
},
individualHooks: true,
});
Run Code Online (Sandbox Code Playgroud)
我刚才在TS也遇到了同样的问题。事实证明,@BeforeUpdate
当您第一次找到单个记录然后更新它时,会触发挂钩:
await Model.findOne(options).then((result) => {
result.update(options);
});
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢这种Model.update(...)
方法,可以使用@BeforeBulkUpdate
钩子代替。
在这里找到此信息:https://github.com/sequelize/sequelize/issues/6253
这对我有用,希望有帮助!