技術ブログ

プログラミング、IT関連の記事中心

knex で生成される SQL を取得する方法

目次

knex で生成される SQL を取得する方法

knexはNode.jsのSQLクエリビルダーで、SQLクエリをプログラム的に生成するための強力なツールです。
時折、実際に生成されるSQLクエリを確認する必要があります。
この記事では、knexで生成されたSQLクエリを取得する2つの主要な方法を紹介します。

1. .toSQL() メソッド

.toSQL()メソッドを使用すると、生成されたSQLクエリとそのバインディングパラメータのオブジェクトが返されます。

const knex = require('knex')({
  client: 'pg',
  connection: {
    host: '127.0.0.1',
    user: 'your_username',
    password: 'your_password',
    database: 'your_database'
  }
});

const queryBuilder = knex.select('*').from('users').where('id', 1);
const query = queryBuilder.toSQL();

console.log(query.toNative());

上記のコードは、usersテーブルからidが1のユーザを選択するSQLクエリを生成し、その結果をコンソールに表示します。

2. .toString() メソッド

.toString()メソッドは、SQLクエリの文字列表現を直接返します。
ただし、パラメータバインディングが展開されるため、デバッグ目的以外での使用は推奨されません。

const knex = require('knex')({
  client: 'pg',
  connection: {
    host: '127.0.0.1',
    user: 'your_username',
    password: 'your_password',
    database: 'your_database'
  }
});

const queryString = knex.select('*').from('users').where('id', 1).toString();

console.log(queryString);

この方法はデバッグの際に非常に役立ちますが、生成された文字列をそのまま実行するとセキュリティのリスクがあるため注意が必要です。