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

时间:2018-09-06 11:06:12

标签: node.js knex.js

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

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

1 个答案:

答案 0 :(得分:0)

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

您可以使用全局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`);
});