如何查看查询“ knex”的版本?

Dan*_*Dan 2 javascript knex.js

出于调试目的,我希望看到SQL查询knex正在执行。例如,我想查看knex为该代码生成的SQL :

 knex('statistics')
    .del()
    .where({
        'stats': 'reddit',
    }); 
Run Code Online (Sandbox Code Playgroud)

Ale*_*sev 21

knex('statistics')
    .del()
    .where({
        'stats': 'reddit',
    }).toString();
Run Code Online (Sandbox Code Playgroud)

  • @greybeard 我认为这是一个进步 (3认同)
  • 伙计们,我试图找到获取原始 SQL 的方法。`toString()` 与 `.toSQL().toNative()` 的方式相同,但更短。你真的认为只有一个正确答案吗? (2认同)

Jer*_*ier 17

.toString()并将.toQuery()完整的 SQL 查询作为字符串返回

对于你的例子:

knex('statistics')
    .del()
    .where({
        'stats': 'reddit',
    }).toString();
Run Code Online (Sandbox Code Playgroud)

返回:

delete from "statistics" where "stats" = 'reddit'
Run Code Online (Sandbox Code Playgroud)

.toSQL().toNative()返回一个对象:

knex('statistics')
    .del()
    .where({
        'stats': 'reddit',
    }).toSQL().toNative();
Run Code Online (Sandbox Code Playgroud)
{
  sql: 'select * from "books" where "author" = $1',
  bindings: [ 'John Doe' ]
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*obo 6

要打印所有查询,然后debug: true在初始化对象上传递一个标志将为所有查询打开debugging

knex({
    client: 'mysql',
    debug: true,
    connection: {
        host: '127.0.0.1',
        port: 3306,
        user: 'root',
        password: '',
        database: ''
    }
})
Run Code Online (Sandbox Code Playgroud)

参考: https: //knexjs.org/#Installation-debug


Mik*_*stö 5

http://knexjs.org/#Interfaces-toSQL

knex('statistics')
    .del()
    .where({
        'stats': 'reddit',
    }).toSQL().toNative()
Run Code Online (Sandbox Code Playgroud)

  • 获取查询字符串是`toNative().sql` (3认同)