Sortノードを使う(その3)

ここのところずっとNode-REDのサンプルを見ながら各ノードの使い方を確認しています。頭出しの記事はこちらをご確認ください。今回はSortノードシリーズの3回目です。

確認するサンプルは、前回に引き続き「読み込み > サンプル > flows > node-red > sequence > sort > 02 - Sort message sequence」です。前回紹介したサンプルとの違いは、Payloadを直接ソートするのではなく、複数メッセージをソート対象にしている点です。ソート対象の入力メッセージとソート後の出力ともに複数のメッセージのまま取り扱っているのがポイントです(前回紹介したサンプルは単一のメッセージ内でのソートでした)。それを再現するため、Sortノードの前にSplitノードを経由してメッセージをバラバラにしています。実運用ではわざわざSplitノードを利用することはなく、元々独立したメッセージをソートできることを示したいのだと思います。たぶん。

バラバラのメッセージをソートする

確認するのは1段目です。


入力データを生成するTemplateノードでは、単純な文字列配列を指定しています。


こいつをSplitノードでバラバラにしています。入力が配列なので固定長1でバラしてます。


Sortノードはmsg.payloadで昇順ソートするよう指定してあります。いたってシンプル。




実行すると、以下のログが出力されます。一度バラされた複数メッセージのmsg.payloadの値で昇順ソートされています。


ちなみに、2段目のサンプルは降順ソートです。3段目、4段目も文字列ソートに関するものです。これらは説明不要だと思うのでスキップします。

バラバラのメッセージに指定されたJSONオブジェクトのプロパティ値でソートする

続いて確認するサンプルは5段目です。フローの見た目は最初に確認したものと同じに見えますが、バラバラに飛んでくるJSONオブジェクトのプロパティ値でソートします。


入力データを生成しているTemplateノードでは、JSONオブジェクト配列を生成しています。


これをSplitノードで配列要素ごとにPayloadを分割します。Splitノードの内容は一つ前のサンプルと同じなので省略します。さらにSortノードではキー「payload.price」でソートしています。


結果は以下の通り、priceの値でソートされました。出力もバラバラのメッセージです。

複数のプロパティを条件に組み込んでバラバラのメッセージに指定されたJSONオブジェクトのプロパティ値でソートする

最後に確認するサンプルは6段目です。基本的に前回の記事の「複数のプロパティを条件に組み込んでソートする」と同じですが、入出力ともにバラバラのメッセージを対象にしているのがポイントです。ってことで、細かいことは全部省略します。

まとめ

まとめます。
  • バラバラのメッセージを対象にしてソートできる
以上、Sortノードシリーズ完了です。

コメント

このブログの人気の投稿

Execノードを使う

Joinノードを使う(その4)

SendGridのX-SMTPAPIヘッダの使い方(Section Tags、Substitution Tags編)