Orm 如何打印在环回控制台中执行SQL查询所花费的时间?
我正在使用下面的代码打印应用程序中执行的SQL查询Orm 如何打印在环回控制台中执行SQL查询所花费的时间?,orm,loopbackjs,loopback,Orm,Loopbackjs,Loopback,我正在使用下面的代码打印应用程序中执行的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)); nex
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查询所需的时间感兴趣
RubyonRails应用程序打印sql查询和计时,与下面给出的类似
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
在loopback 3中有什么方法可以实现这一点吗?恐怕loopback无法提供现成的计时信息。您可以使用执行前<代码>和执行后<代码>挂钩自己收集计时数据
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();
});
}