检查序列化交易的状态?

时间:2018-09-10 11:54:48

标签: mysql node.js sequelize.js

如何检查事务是否正在执行,落实或回滚?

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 } }

1 个答案:

答案 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调用中嵌套该逻辑。