正在从 Knex.js 池中获取当前正在执行的查询

Fetching currently performing queries from the Knex.js pool

我正在尝试通过检查基于 tarn 的池来获取当前 运行 查询。以前使用节点池时,我可以检查 _inUseObjects,但是,如果我尝试检查 pendingCreates,我有许多 PendingOperation 有承诺的对象。

甚至可以通过检查连接来获取查询吗?

我认为无法直接从池中监控正在使用的连接,因为当连接从池中取出时,池会忘记它。

您可以使用全局 knex 事件来跟踪开始/完成的查询https://knexjs.org/#Interfaces-Events

像这样:

knex.on('query', querySpec => {
  console.log(`Query ${querySpec.__knexUid} started`);
}); 

knex.on('query-response', (res, querySpec) => {
  console.log(`Query ${querySpec.__knexUid} ended`);
}); 

knex.on('query-error', (err, querySpec) => {
  console.log(`Query ${querySpec.__knexUid} failed`);
});