コアノード

Node-REDのパレットには、フローを作成するための基本的な構成要素であるデフォルトのノードが一通り含まれています。 このページでは知っておくべきコアノードについて取り上げます。

すべてのノードは、ノードを選択した際にInfoサイドバーで確認できるドキュメントを含んでいます。


Inject node

Injectノードは、エディタ内でこのノードのボタンをクリックすることで 手動でフローを始動させることができます。 一定間隔で自動的にフローを始動させることもできます。

Injectノードから送出されるメッセージには、 そのpayloadおよびtopicプロパティを設定することができます。

payloadには様々な型を設定することができます。:

  • フローまたはグローバルコンテキストのプロパティ値
  • 文字列型、数値型、Boolean型、バッファ型、オブジェクト型
  • 1970年1月1日からのミリ秒で表現されるタイムスタンプ型

Debug node

Debugノードは、エディタ内のDebugサイドバーにメッセージを表示させることができます。

このサイドバーは送られてきたメッセージを構造的なビューで表示し、 メッセージを探し出しやすくします。

各メッセージと並んで、 Debugサイドバーにはメッセージを受信した時刻とそのメッセージを送出したDebugノードの情報が含まれています。 ソースノードIDをクリックするとワークスペース内のどのノードなのかがわかります。

ノードのボタンは、出力の有効化無効化を制御するために使用します。 利用していないDebugノードは無効化したり、削除したりすることを推奨します。

また、このノードはランタイムログにすべてのメッセージを出力したり、 Debugノードの下に短い(32文字)のステータステキストを表示させたりすることができます。

メッセージを利用するページでは Debugサイドバーの使い方について更なる情報を提供しています。


Function node

Functionノードは、 受け渡されるメッセージに対するJavaScriptコードの実行を可能にします。

Functionノードを利用するための素晴らしいガイドは、こちらにあります。


Change node

Changeノードは、Functionノードに頼ることなく、 メッセージプロパティを変更したり、コンテキストプロパティを設定したりすることができます。

各ノードには、順番に適用される複数の操作を設定することが可能です。 利用できる操作は以下のとおりです。:

  • 値の代入 - プロパティの代入。 値にはさまざまな型を利用でき、さらに既存のメッセージまたはコンテキストプロパティから取得することもできます。
  • 値の置換 - メッセージプロパティの一部を検索、置換
  • 値の移動 - プロパティの移動や名称変更
  • 値の削除 - プロパティの削除

プロパティを設定する際にはJSONata式の結果を設定することもできます。 JSONataは、JSONデータに対する軽量なクエリかつ変換言語です。


Switch node

Switchノードは各メッセージに対して一連のルールで評価し、 メッセージを異なるフローにルーティングすることができます。

このノードには、 評価するプロパティ(メッセージプロパティまたはコンテキストプロパティ)を設定します。

ルールには以下の4種類があります。:

  • Value ruleは設定されたプロパティに対して評価をおこないます
  • Sequence ruleはSplitノードによって生成されるような メッセージシーケンスを利用することができます
  • JSONata式ではメッセージ全体に対して評価をおこない、 trueの値を返した場合に一致したとみなすことができます
  • その他は前述のルールのどれにも一致しなかった場合、 一致するように利用できます

このノードは、一致したルールに応じた出力先すべてに対してメッセージを送出します。 しかし、一致するルールがあった時点で評価をやめるように設定することもできます。


Template node

Templateノードは、メッセージプロパティをテンプレートに設定することで テキストを生成することができます。

このノードでは、 Mustache記法を利用することができます。

例えば、テンプレートを以下のようにします。:

This is the payload: {{payload}} !

{{payload}}はメッセージのpayloadプロパティの値に置換されます。

デフォルトではMustache記法は特定の文字をHTMLエスケープ文字コードに置換します。 これを防ぐためには、3つの波括弧を利用することができます。: {{{payload}}}.

Mustache記法は単純なループをサポートしています。 例えば、msg.payloadが名前の配列を有していた場合(["Nick", "Dave", "Claire"]のような)、 以下のテンプレートによって名前のHTMLリストを生成することができます。:

<ul>
{{#payload}}
  <li>{{.}}</li>
{{/payload}}
</ul>
<ul>
  <li>Nick</li>
  <li>Dave</li>
  <li>Claire</li>
</ul>

このノードはテンプレートの結果を設定されているメッセージまたはコンテキストプロパティに代入します。 もしテンプレートが適切なJSONやYAMLコンテンツを生成する場合、 生成物をJavaScriptオブジェクトにパースするように設定できます。