我在我的节点应用程序中使用knex版本3.10.10,连接到MySQL DB。我在应用程序中的knex配置是使用池选项配置。
1)在我触发查询后是否需要EXPLICITLY返回到池的连接?如果是 - 如何
2)在触发查询之前,是否需要对池的连接进行明确的检查?
提前致谢
不,没有必要这样做。
Knex为您处理连接池。如果需要,可以在连接设置中使用pool: { min: 0, max: 7 }设置调整池大小,文档还包括指向Knex用于池处理的库的链接,如果您关心血腥细节。
pool: { min: 0, max: 7 }
knex文档在这里有一些信息:link
Knex将在查询或事务期间使用每个连接,然后将其释放回池中。
但是,如果您实现事务(即多个SQL语句要作为一个单元保存或取消)而不使用Promise,那么您将需要显式提交/回滚事务以正确完成事务,这也将释放连接回到交易完成后的池。 (有关Knex交易的更多信息,请访问:here)。
文档中没有这样的信息,但基于source code你可以像这样访问knex池
knex
const knex = require('knex')(config); const pool = knex.client.pool; console.log(pool);
knex在引擎盖下使用tarn池,所以你可以在那里查看它的方法。
附:我不知道你在哪里得到knex版本(3分的东西),但在这个答案时刻它的当前版本是0.14.4
0.14.4