CTEを使用してRedshiftデータベース(Postgres 8.0.2に基づいて)を照会する必要があるNode.jsアプリケーションを構築しています。残念ながら、これまでに見たSQLクエリービルダー(node-sql,、後継版)は共通テーブル式(CTE)をサポートしていないようです。共通テーブル式(WITH句)をサポートするノードベースのSQLビルダー
Rubyでは、テーブルのエイリアス名とデータセット参照を定義するために2つの引数をとるwith
メソッドを持つJeremy EvansのSequel gemを使用して、Rubyで一般的なテーブル式を作成するのに成功しました。私はNodeで似たようなことをしたいと思います。
私はNode.js SQLクエリビルダーの明らかな候補を見逃しましたか?私が言うことができるものから、これらは4つの最も明白ではない:
- nodesql
- nodesql(なしのpostgresをサポートしていますか?)私はできた
- sequelize
私は以上の構成要素のクエリの1(CTEは、最終 'knex.select(場合などが壊れるだと思います) ')はバインドされたパラメータを使用しました。文字列連結を使用する代わりに、実際に 'knex.raw'のバインディングを使用することをお勧めします:' knex.raw( 'とt1を(?)、t2を(?)?'、[this_cte、that_cte、knex.select (['t1'、 't2'])]) 'これは2015年4月30日にリリースされたknexバージョン0.8.0を必要とします。また、knexの「Raw Queries」機能を起動します。つまり、「基本的なSQLライブラリが通常のクエリで返すものは何でも応答します」という意味です。 – codermonkeyfuel
また、knexでのCTEのファーストクラスサポートの実装については、[knex issue#716](https://github.com/tgriesser/knex/issues/716)を参照してください。 – codermonkeyfuel
クエリ文字列を連結し、 'knex.raw'を使用すると、クエリビルダを最初に使用する目的が無効になります。 –