如何在Knex中扩展QueryBuilder类时访问当前上下文的事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Knex中扩展QueryBuilder类时访问当前上下文的事务相关的知识,希望对你有一定的参考价值。

我试图扩展Knex.js的QueryBuilder。我想修改delete()方法以删除我的Objection.js模型的子元素。当前代码运行良好,但我想支持新方法中的事务:

class CustomQueryBuilder extends QueryBuilder {
  // Override delete method
  delete() {
    return super.select('*').first().runAfter(async (old, builder) => {
      // Some extra logic here, being able to access old entry
      return await old.query().nativeDelete() // original delete
    })
  }

  nativeDelete() {
    return super.delete()
  }
}

当前背景的交易在哪里?它可以访问吗?

注意:我不能将它作为delete(trx)函数中的参数传递,因为可以从其他方法调用delete()而不将其明确地作为参数传递

答案

可以通过qazxsw poi访问查询生成器的当前事务:

builder.context()

以上是关于如何在Knex中扩展QueryBuilder类时访问当前上下文的事务的主要内容,如果未能解决你的问题,请参考以下文章

Knex:如何在 knex 中的有子句中编写 ARRAY_AGG?

带有 Express 的 Knex.js,如何在 knex.commit 后跟 knex.select 查询?

如何将 knex 查询存储在变量中?

如何在 Knex 中像查询一样逃避 %?

如何在 Knex 查询中执行 MySQL 函数?

如何在 knex.js 迁移中链接承诺