Help us understand the problem. What is going on with this article?

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

More than 3 years have 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

joeartsea
Chief Technical Officer at Uhuru Corporation. enebular, Milkcocoa, Node-RED
https://about.me/joeartsea
uhuru
株式会社ウフルはインターネットによる革新的なサービスがお客様企業の価値向上につながる事を目指し「テクノロジーと自由な発想で未来を創る」を企業理念に掲げています。エッジとクラウドを “つなぐ” IoTオーケストレーションサービス「enebular®」をベースにIoTやデジタルマーケティングの領域で顧客のビジネスに変革をもたらし続けております。
https://uhuru.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした