SQL アクション
Workflow: SQL nodeCommunity Edition+はじめに
特定のシナリオでは、上記のシンプルなコレクション操作ノードでは複雑な処理に対応できない場合があります。そのような場合、SQL ノードを直接使用して、データベースに複雑な SQL ステートメントを実行させ、データ操作を行うことができます。
アプリケーション外部でデータベースに直接接続してSQL操作を行う場合との違いは、ワークフロー内では、ワークフローのコンテキスト変数(プロセスコンテキストの変数)をSQLステートメントの一部パラメータとして利用できる点です。
インストール
組み込みのプラグインなので、インストールは不要です。
ノードの作成
ワークフロー設定画面で、フロー内のプラス(「+」)ボタンをクリックし、「SQL アクション」ノードを追加します。

ノードの設定

データソース
SQL を実行するデータソースを選択します。
データソースは、メインデータソース、PostgreSQL タイプなど、Sequelize 互換のデータベースタイプである必要があります。
SQL コンテンツ
SQL ステートメントを編集します。現在、1つのSQLステートメントのみがサポートされています。
v2.0.30 以降、セキュリティ上の理由から、SQLステートメントにおける変数の直接テキスト置換はサポートされなくなりました。代わりにパラメーター化クエリを使用する必要があります。
SQLステートメントにはプロセスコンテキストの変数を使用できますが、:variableName の形式でプレースホルダーを指定する必要があります。例:
パラメーターリスト
上記のSQLステートメントでは、:userId がプレースホルダーです。プレースホルダーの置換は「パラメーターリスト」で設定する必要があります。変数名にはプレースホルダーの名前(例:userId)を使用し、変数の値は変数選択ツールを使ってプロセスコンテキストから選択できます。
ノードの実行結果
v1.3.15-beta 以降、SQL ノードの実行結果は純粋なデータで構成される配列となります。それ以前は、クエリのメタ情報を含む Sequelize のネイティブな戻り値構造でした(詳細は sequelize.query() を参照してください)。
例えば、以下のクエリの場合:
v1.3.15-beta 以前の結果:
v1.3.15-beta 以降の結果:
よくある質問
SQL ノードの結果はどのように使用しますか?
SELECT ステートメントを使用した場合、クエリ結果は Sequelize の JSON 形式でノードに保存されます。JSON-query プラグインを使用して解析し、利用することができます。
SQL アクションはコレクションイベントをトリガーしますか?
いいえ、トリガーしません。SQL アクションは、SQL ステートメントを直接データベースに送信して処理します。関連する CREATE / UPDATE / DELETE 操作はすべてデータベース内で発生します。一方、コレクションイベントは Node.js のアプリケーション層(ORM 処理)で発生するため、コレクションイベントはトリガーされません。

