gpt4 book ai didi

orm - 如何打印 SQL 查询在环回控制台中执行的时间?

转载 作者:行者123 更新时间:2023-12-03 08:29:21 26 4
gpt4 key购买 nike

我正在使用以下代码打印在我的应用程序中执行的 SQL 查询

var chalk = require('chalk');

module.exports = (app) => {
var connector = app.datasources.mysqlDs.connector;
connector.observe('after execute', function(ctx, next) {
console.log(chalk.green(ctx.req.sql));
next();
});
}

上面的代码像这样在控制台中打印 sql 查询,
SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1

我有兴趣打印执行 sql 查询的时间。

Ruby on rails 应用程序打印 sql 查询以及时间,类似于下面给出的
 User Load (0.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1

有没有办法在环回 3 中实现这一点?

最佳答案

恐怕 LoopBack 不提供开箱即用的计时信息。您可以使用 before executeafter execute自己收集计时数据的钩子(Hook)。

module.exports = (app) => {
var connector = app.datasources.mysqlDs.connector;
connector.observe('before execute', function(ctx, next) {
// store the start time in the context
ctx.__started = process.hrtime();
next();
});

connector.observe('after execute', function(ctx, next) {
// compute the time difference as [seconds, nanoseconds]
const delta = process.hrtime(ctx.__started);
// convert the two-part value into number of milliseconds elapsed
// and round it to a single decimal place
const durationInMs = 10 * Math.round((delta[0]*1000 + delta[1]/1e6)/10);
console.log('(%s ms) %s', durationInMs, chalk.green(ctx.req.sql));
next();
});
}

关于orm - 如何打印 SQL 查询在环回控制台中执行的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53002786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com