如何检查事务是否正在执行,落实或回滚?
return sequelize.transaction(function (t) {
// return statements
}).then(function (res_) {
t.commit()
}).catch( function (err) {
t.rollback();
});
//Here I want to check the transaction status
if(t.status != 'committed') {
// transaction not committed
}
}
答案 0 :(得分:0)
您已经接近了,但是您必须对代码的结构进行一些更改。您正在Sequelize中使用自动交易。当回调函数完全完成时,它将为您自动提交事务。同样,在任何时候抛出错误时,交易都会自动取消。您可以使用以下方法检查事务是否已提交:
return sequelize
.transaction(function (t) {
// Run some queries, do some stuff...
})
.then(function () {
// `t` is not defined, but we know it is committed here
})
.catch(function (error) {
// `t` is not defined, but we know it has been rolled back
});
如果您要依靠提交的事务,则必须在then
调用中嵌套该逻辑。