Tip

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

SQL アクション

ワークフロー:SQL ノードCommunity Edition+

はじめに

特定のシナリオでは、上記のシンプルなコレクション操作ノードでは複雑な処理に対応できない場合があります。そのような場合、SQL ノードを直接使用して、データベースに複雑な SQL ステートメントを実行させ、データ操作を行うことができます。

アプリケーション外部でデータベースに直接接続してSQL操作を行う場合との違いは、ワークフロー内では、ワークフローのコンテキスト変数(プロセスコンテキストの変数)をSQLステートメントの一部パラメータとして利用できる点です。

インストール

組み込みのプラグインなので、インストールは不要です。

ノードの作成

ワークフロー設定画面で、フロー内のプラス(「+」)ボタンをクリックし、「SQL アクション」ノードを追加します。

SQL アクションの追加

ノードの設定

SQL ノードの設定

データソース

SQL を実行するデータソースを選択します。

データソースは、メインデータソース、PostgreSQL タイプなど、Sequelize 互換のデータベースタイプである必要があります。

SQL コンテンツ

SQL ステートメントを編集します。現在、1つのSQLステートメントのみがサポートされています。

Info

v2.0.30 以降、セキュリティ上の理由から、SQLステートメントにおける変数の直接テキスト置換はサポートされなくなりました。代わりにパラメーター化クエリを使用する必要があります。

SQLステートメントにはプロセスコンテキストの変数を使用できますが、:variableName の形式でプレースホルダーを指定する必要があります。例:

SELECT * FROM users WHERE id = :userId;

パラメーターリスト

上記のSQLステートメントでは、:userId がプレースホルダーです。プレースホルダーの置換は「パラメーターリスト」で設定する必要があります。変数名にはプレースホルダーの名前(例:userId)を使用し、変数の値は変数選択ツールを使ってプロセスコンテキストから選択できます。

ノードの実行結果

v1.3.15-beta 以降、SQL ノードの実行結果は純粋なデータで構成される配列となります。それ以前は、クエリのメタ情報を含む Sequelize のネイティブな戻り値構造でした(詳細は sequelize.query() を参照してください)。

例えば、以下のクエリの場合:

select count(id) from posts;

v1.3.15-beta 以前の結果:

[
    [
        { "count": 1 }
    ],
    {
        // meta
    }
]

v1.3.15-beta 以降の結果:

[
    { "count": 1 }
]

よくある質問

SQL ノードの結果はどのように使用しますか?

SELECT ステートメントを使用した場合、クエリ結果は Sequelize の JSON 形式でノードに保存されます。JSON-query プラグインを使用して解析し、利用することができます。

SQL アクションはコレクションイベントをトリガーしますか?

いいえ、トリガーしません。SQL アクションは、SQL ステートメントを直接データベースに送信して処理します。関連する CREATE / UPDATE / DELETE 操作はすべてデータベース内で発生します。一方、コレクションイベントは Node.js のアプリケーション層(ORM 処理)で発生するため、コレクションイベントはトリガーされません。