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ノードシリーズ完了です。
コメント
コメントを投稿