Javascript 在if-else条件下回滚事务knex

Javascript 在if-else条件下回滚事务knex,javascript,node.js,transactions,knex.js,Javascript,Node.js,Transactions,Knex.js,我使用knex中的事务处理获得了此代码 knex.transaction(async trx => { try { const ids = await knex('team').insert({id: 6, name: "test1"}).transacting(trx); const idsNew = await knex('team').insert({id: 7, name: "test2

我使用knex中的事务处理获得了此代码

knex.transaction(async trx => {

        try {
            const ids = await knex('team').insert({id: 6, name: "test1"}).transacting(trx);
            const idsNew = await knex('team').insert({id: 7, name: "test2"}).transacting(trx);

            if(condition){
                await trx.rollback();
            }
        } catch (err) {
            console.log(err)
        }
      })
当conditon==true时,我运行回滚事务,数据库并没有新数据。 但是日志抛出错误
(节点:32723)未处理PromisejectionWarning:错误:事务被拒绝,但没有错误:未定义

有人帮我解释这个错误并帮我解决这个问题吗?
谢谢

当事务处理程序函数返回承诺时(异步函数总是这样做),这意味着当该承诺解析/拒绝时,
knex
隐式提交/回滚

这是上面代码的第一个问题。该错误消息的下一个问题是
trx.rollback()
需要一个参数<代码>trx.rollback(新错误(“条件导致回滚!”)

下面是应该可以工作的代码:

事务(异步trx=>{

    try {
        const ids = await knex('team').insert({id: 6, name: "test1"}).transacting(trx);
        const idsNew = await knex('team').insert({id: 7, name: "test2"}).transacting(trx);

        if(condition){
            // this causes handler function to reject the returned promise
            // and knex will do implicit rollback
            throw new Error("Rolling back because of condition");
        }
    } catch (err) {
        console.log(err)
    }
  })