根据事务处理钩子

我想在我的用户模型上的afterCreate上创build一个sequelize挂钩。 当我只是创build一个没有交易的用户时,它工作得很好。 但是如果我在事务中运行我的创build语句挂钩运行之前提交。

用户模型挂钩

hooks: { afterCreate: userModule.NewUserHook, afterBulkCreate: userModule.NewUserHook } 

钩子function

 NewUserHook: function NewUserHook(user, options){ console.log('Inside hook'); } 

交易在options.transaction中是可以接受的。

在交易提交之后,有没有办法挂钩?

有点晚了,但是因为我在search答案时遇到了这个问题,所以这个问题可能对其他人有用。

如果你在一个事务中创build用户,那么这个事务对象将被传递给钩子callback的一个参数(取决于版本)。 链接到文档 。 以下是直接从源链接复制的:

 // Here we use the promise-style of async hooks rather than // the callback. User.hook('afterCreate', (user, options) => { // 'transaction' will be available in options.transaction // This operation will be part of the same transaction as the // original User.create call. return User.update({ mood: 'sad' }, { where: { id: user.id }, transaction: options.transaction }); }); sequelize.transaction(transaction => { User.create({ username: 'someguy', mood: 'happy', transaction });