Noobの質問
Oidリストを介してデータを収集するために、snmp関数を使用しています。データを抽出し、json関数を使用してデータを解析して、以下に示すjson文字列にしました。
msg.payload:文字列[81]
"[{"oid":"1.3.6.1.4.1.38783.3.3.1.1.1.0","type":2,"value":53800,"tstr":"Integer"}]"
この文字列から"value":53800
を取り除き、msg.payload
に出力する関数を記述しようとしています。
以下を試しましたが、戻ります
"TypeError:読み取り専用プロパティ
'_msgid'
/"value":53700,"tstr":"Integer"}]"
に割り当てることはできません
var msg = msg.payload;
var value = msg.substr(49,62);
return value;
そのように文字列を分割しようとしないでください。値の長さが変わると、エラーが発生しやすくなります。
代わりに、関数ノードの前にJSONノードを介してメッセージを実行します。
これにより文字列が解析され、適切なJSONオブジェクトが生成されます。
その後、値フィールドにアクセスできます。
var value = msg.payload[0].value;
msg.payload = value;
return msg;
Cannot assign to read only property
エラーは、関数から文字列を返したためです。文字列ではなくメッセージJSONオブジェクトを返す必要があります。私の例ではmsg.payload
を必要な値に変更します。