【问题标题】:Return connection to knex db pool返回到 knex 数据库池的连接
【发布时间】:2018-03-16 17:09:16
【问题描述】:

我在我的节点应用程序中使用 knex 版本 3.10.10,连接到 MySQL 数据库。 我在app中对knex的配置是使用pool选项配置。

1) 在我触发查询后,是否需要明确返回到池的连接?如果是 - 如何

2) 在触发查询之前,是否需要明确地检查池的连接?

提前致谢

【问题讨论】:

    标签: mysql node.js database connection-pooling knex.js


    【解决方案1】:

    没有。也不需要这样做。

    Knex 为您处理一个连接池。如果需要,您可以在连接设置中使用以下设置调整池大小:pool: { min: 0, max: 7 },如果您关心血腥细节,文档还包含指向 Knex 用于池处理的库的链接。

    knex 文档在此提供了一些相关信息:link

    Knex 将在查询或事务期间使用每个连接,然后释放回池。

    但是,如果您在不使用 Promises 的情况下实现事务(即作为一个单元保存或取消的多个 SQL 语句),那么您将需要显式提交/回滚事务以正确完成事务,这也会释放连接交易完成后返回池中。 (有关 Knex 交易的更多信息:here)。

    【讨论】:

    • 你的解释很好。我正在使用没有事务的knex连接。我只是输入require knex并调用query.then。我需要明确关闭连接吗?
    【解决方案2】:

    文档中没有此类信息,但基于source code 您可以像这样访问knex

    const knex = require('knex')(config);
    const pool = knex.client.pool;
    console.log(pool);
    

    knex 在后台使用tarn 池,因此您可以在那里查看它的方法。

    附:我不知道你从哪里得到knex 版本(3 点),但在这个答案时刻它的当前版本是0.14.4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-09
      • 2015-03-28
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      相关资源
      最近更新 更多