Templateノードを使う(その1)

今回はTemplateノードを使ってみます。

Mustacheテンプレート

最初のサンプルは「flows > node-red > function > template > 01 - Use mustache syntax」です。置換したいパラメータを「{{}}」で括ってテンプレート上に記述するMustache形式が利用できるとのこと。


まずはInjectノードを見てみます。msg.payloadにJSONオブジェクトが、msg.topicに文字列「Fruits」が設定されています。


msg.payloadの内容が見づらいのでJSONエディタで開いてみると、以下のようにnamepriceをプロパティに持つJSONオブジェクトが配列形式になっています。


続いて、templateノードを見てみます。わりと盛りだくさんですが、次の情報が読み取れます。
  • テンプレートが適用された文字列は「プロパティ」で指定した「msg.payload」に格納されます
  • テンプレートエディタのハイライト(見やすいよう色付け)は「構文」で指定した「mustache」が適用されます
  • テンプレート内の「{{topic}}」の部分に「msg.topic」の値(Fruits)が埋め込まれます
  • {{#payload}}〜{{/payload}}」が「JSON配列」として評価され、テンプレート内で繰り返されます
  • {{name}}」と「{{price}}」の部分に「msg.payload」のJSON配列の各値が埋め込まれます
  • テンプレートは「Mustacheテンプレート」として評価されます
  • 平文」として出力されます


実行結果は、以下の通りです。期待通り。


templateノードの「プロパティ」を変えてみたらどういう結果になるでしょうか。試しに「msg.hoge」としてみます。


わかりやすいようにdebugノードの出力対象をmsgオブジェクト全体としてみます。



結果は以下の通りです。
  • msg.payloadmsg.topicにはinjectノードで指定した値(それぞれJSON配列と文字列)がそのまま格納されている
  • msg.hogeにはテンプレートが適用された文字列が格納されている


まとめ

たかがtemplateノードと思っていましたが、意外と情報量が多かったのでこの辺にしておきます。
  • Mustacheテンプレートが利用できる
  • templateノードの「プロパティ」にテンプレートが適用された文字列が格納される
続きは次回です。


コメント

このブログの人気の投稿

Execノードを使う

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

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