Templateノードを使う(その1)
今回はTemplateノードを使ってみます。
Mustacheテンプレート
最初のサンプルは「flows > node-red > function > template > 01 - Use mustache syntax」です。置換したいパラメータを「{{}}」で括ってテンプレート上に記述するMustache形式が利用できるとのこと。
まずはInjectノードを見てみます。msg.payloadにJSONオブジェクトが、msg.topicに文字列「Fruits」が設定されています。
msg.payloadの内容が見づらいのでJSONエディタで開いてみると、以下のようにnameとpriceをプロパティに持つJSONオブジェクトが配列形式になっています。
- テンプレートが適用された文字列は「プロパティ」で指定した「msg.payload」に格納されます
- テンプレートエディタのハイライト(見やすいよう色付け)は「構文」で指定した「mustache」が適用されます
- テンプレート内の「{{topic}}」の部分に「msg.topic」の値(Fruits)が埋め込まれます
- 「{{#payload}}〜{{/payload}}」が「JSON配列」として評価され、テンプレート内で繰り返されます
- 「{{name}}」と「{{price}}」の部分に「msg.payload」のJSON配列の各値が埋め込まれます
- テンプレートは「Mustacheテンプレート」として評価されます
- 「平文」として出力されます
実行結果は、以下の通りです。期待通り。
templateノードの「プロパティ」を変えてみたらどういう結果になるでしょうか。試しに「msg.hoge」としてみます。
わかりやすいようにdebugノードの出力対象をmsgオブジェクト全体としてみます。
結果は以下の通りです。
- msg.payloadとmsg.topicにはinjectノードで指定した値(それぞれJSON配列と文字列)がそのまま格納されている
- msg.hogeにはテンプレートが適用された文字列が格納されている
まとめ
たかがtemplateノードと思っていましたが、意外と情報量が多かったのでこの辺にしておきます。
- Mustacheテンプレートが利用できる
- templateノードの「プロパティ」にテンプレートが適用された文字列が格納される
続きは次回です。
コメント
コメントを投稿