Commit/rollback a knex transaction using async/await

独自空忆成欢 提交于 2019-11-30 14:09:36
Lance Pollard

Building off of this Knex Transaction with Promises, it looks like it should be along these lines:

// assume `db` is a knex instance

insert: async (function(db, data) {
  const trx = db.transaction();
  try {
    const idUser = await(user.insertData(trx, data));
    trx.commit();
  } catch (error) {
    trx.rollback();
    throw error;
  }

  return {
    idUser: idUser
  }
})

You might be able to achieve this with something similar to this

function createTransaction() {
  return new Promise((resolve) => {
    return knex.transaction(resolve);
  });
}

async function() {
  const trx = await createTransaction();
  ...
  trx.commit();
}

You can try this:

async function() {
  await knex.transaction( async (trx) => {
     ...
     trx.commit();
  }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!