#はじめに
Node-redではJSonataが使えます。
これ結構便利なんですが、あまりJSonataの本家サイトのガイド見ても基本的な事しか書いてないので、色々試行錯誤した結果をメモします。
(全三部作です。)
#グローバル変数で、検索時に変数を使いたい時
例えば、Global変数の中に遊園地の一覧が配列で格納されたTMPというJSONがあるとします。
[
{
"name":"東京ネズミーパーク",
"pref":"Chiba",
"serial":000001
},
{
"name":"ドイツの村",
"pref":"chiba",
"serial":000002
},
{
"name":"読み書きランド",
"pref":"tokyo",
"serial":000003
}
]
それで、例えばchibaのテーマパークのシリアルを一覧したい場合、JSonata的には
$globalContext( "TMP" )[ pref = "chiba"].serial
と書けば良いんだけど、この**"chiba"**に当たる箇所に変数を使いたくなっちゃったんです。
だけどどーにもちゃんと動かない。
そこでFunctionを使うと上手く動きます。
(ちなみに今回の例では、別途書く予定の記事の仕込みとして、$joinで一つのテキストに繋げてます。。)
$join(function($section , $tmplist ){
$tmplist[ pref = $pref ].serial
}(
$._pref,
$globalContext( "TMP" )
), " ")
###一応解説すると、、
function( $a, $b ){
$a & $b
}( $A, $B )
この{}内に処理内容を記述して、後ろの()内に渡したい引数を記載する感じで書けます。
#本家のガイド
https://docs.jsonata.org/programming.html#functions
以上です。ありがとうございました。
#第二弾の記事はこちら
https://qiita.com/kouichirou/items/d58a251eef3e50658f37