如何在adonis js中使用DB [transaction,commit,rollback]

时间:2019-03-25 08:11:45

标签: javascript node.js adonis.js

我想对数据库事务使用try catch,因为如果遇到错误我希望数据库在try函数中回滚所有查询

这是我的尝试。我要评论const empImg,因为我想测试。查询错误未知await emp.save();

之后,不会回滚empImg
  const trx = await Database.beginTransaction()
  try {
      const user = await auth.getUser();
      const emp = new Employee();
      emp.fill(empData);
      emp.merge({ update_by: user.name  })
      await emp.save();
      // const empImg = new EmployeePhoto();
      empImg.name = user.name;
      await empImg.save();
      await trx.commit()
    } catch (error) {
      await trx.rollback()
      throw new InvalidAccessException();
    }

我当然可以放

emp.delete();处于捕获状态,但我必须检查哪个查询错误并将其删除。

如果出现错误,我该如何回退我的emp和empImg?

1 个答案:

答案 0 :(得分:0)

您可以将 trx 对象发送给Lucid函数以使用事务处理机制,例如a

await emp.save(trx);

AdonisJS Docs中的交易