node-red
Node-REDDay 11

Node-RED Version 0.14から追加されたSplit / Joinノードの使い方

More than 1 year has passed since last update.

Node-RED Version 0.14から新しくSplitノードとJoinノードが追加されました。

これは配列メッセージの各要素を分解して1つのメッセージとして流すSplitノードと、分解されたメッセージを配列/文字列/オブジェクトなど多様な型として結合するJoinノードのことで、これらを使いこなすことでループするフローを作成する必要がほとんどなくなります。

Splitノード

配列をSplit

Splitノードは何も設定せず配列データを渡すだけで動作が解ります。

image

文字列をSplit

配列だけではなく文字列とオブジェクトも分解できるようです。以下は;で分けてみました(デフォルトの例は改行コード)

image

1:2:3:4:5という文字列を渡すと先ほどと同様、各要素のメッセージに分割されました。

image

オブジェクトをSplit

続いてオブジェクトです。Injectノードに以下のようなJSONを渡します。

image

これだけでメッセージが分割されます。簡単ですね。

image

Joinノード

配列をSplitして配列でJoin

まず、配列をSplitして配列としてJoinします。これは何もしないでJoinノードを置くだけです。

image

配列をSplitして文字列でJoin

次に配列 -> 文字列です。Joinノードの設定を開いて以下のように設定します。

image

これで配列 -> 文字列になりました。

image

配列をSplitしてオブジェクトでJoin

次に配列 -> オブジェクトです。オブジェクトにするためにはkeyが必要です。それはSplitされた後にmsg.parts.keyなど(任意で他のプロパティでも良い)で指定します。

以下のようにSplitノードの後にChangeノードを配置します。

image

Changeノードは以下のように設定します。

image

ただし、このままではすべての値のkeyvalになってしまうので以下のようにChangeノードの後にTemplateノードを置きます。

image

Templateノードは以下のように設定します。msg.parts.keyは先ほどChangeノードで設定したvalがSetされていて、msg.parts.indexにはSplitされたタイミングで配列の要素番号がSetされています。これを連結するわけですね。

image

最後にJoinノードを以下のように設定します(要素数は入力時と同様に5つにする場合でも明示的に5と入力する必要があります)

image

以下のような結果になります。

image