knex.js - 仅调试SQL

riz*_*oro 10 express bookshelf.js knex.js

调试模式打开时,有没有办法在控制台上只显示SQL查询?我想减少显示的信息量.

谢谢您的帮助 ;)

tim*_*les 18

设置环境变量以配置debug模块:

  • DEBUG=knex:query 只是查询
  • DEBUG=knex:tx 用于交易
  • DEBUG=knex*为一切.

  • 设置 env 后,如何在运行应用程序时进行调试? (2认同)
  • 比接受的答案或需要注册记录查询的函数的答案要好得多。真的很好用! (2认同)

Ema*_*tti 11

如果你需要显示查询字符串,一种方法是注册一个函数,该函数使用Knex在执行查询之前发出的事件'query'来记录查询数据.

例如:

var knex = require( 'knex' );
knex.on( 'query', function( queryData ) {
    console.log( queryData );
});
Run Code Online (Sandbox Code Playgroud)

之后,在每个查询之前,调用匿名函数,queryData包含json以及有关查询的信息.

  • 可以简化为`knex.on('query',console.log)`。 (3认同)

tgr*_*ser 5

实际上,如果您使用的是 MySQL,则可以设置

debug: ['ComQueryPacket']
Run Code Online (Sandbox Code Playgroud)

作为 mysql(不是 Knex)的配置设置的一部分。

不过,我会考虑将其添加为 Knex 中的一个选项。