正在从 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`);
});
我正在尝试通过检查基于 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`);
});