sequelize的transaction事务是否能监听rollback?
项目中通过劫持sequelize
的几个方法update、destroy、save
进行缓存处理。
但是遇到了开启transaction
被rollback
就数据不同步的情况,数据库rollback
了,但是缓存生效了。
await sequelize.transaction(async function (transaction) {
// 请问是否可以通过这个 transaction 对象监听到`rollback`?
});
下面是我处理缓存的简单例子,这情况下只能寄希望能通过transaction
这个对象有钩子处理了
import Sequelize from 'sequelize';
const {Model} = Sequelize;
const _save = Model.prototype.save;
Model.prototype.save = async function (options) {
const instance = this;
const model = instance.__proto__.constructor;
// 执行原始方法
const result = await _save(options);
// 记录缓存
_cacheSave(model, instance);
if (options && options.transaction) {
// 现在的问题就是遇到这个options.transaction被rollback不知道 上面 _cacheSave 已经执行 缓存生效了
console.log(options.transaction);
}
return result;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
解决了,测试后发现原生只有提供
afterCommit
在transaction
对象上可以通过下面的方式挂载钩子但是这个钩子只能监听到
commit
不能监听rollback
;然后换个思路既然
transaction
是对象,可以自己在上面设钩子啊在劫持方法内监听钩子
解决了