красный узел не может получить msg.payload для тега узла undede 1000 * - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь получить данные полезной нагрузки в узле шаблона внутри тега JS.
Узел шаблона не является частью библиотеки dashboard .
Вне кода JS вы можете получить полезную нагрузку с помощью тегов усов {{.}}.
Есть идеи, как получить данные в коде JS? Это узлы: enter image description here Вот код для этого:

[{"id":"11a1f4fa.478f8b","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"df800fc8.3dc23","type":"http in","z":"11a1f4fa.478f8b","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":280,"y":200,"wires":[["4e46196.87169e8"]]},{"id":"4e46196.87169e8","type":"function","z":"11a1f4fa.478f8b","name":"dummy payload","func":"msg.payload = {\n    'data1': 15,\n    'data2': 20\n};\nreturn msg;","outputs":1,"noerr":0,"x":500,"y":200,"wires":[["b0ce68d7.a40808"]]},{"id":"b0ce68d7.a40808","type":"template","z":"11a1f4fa.478f8b","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"This is the payload: {{payload.data1}} !\n<script>\n(function(scope){\n    scope.$watch('msg', function(msg){\n       console.log(msg); \n    });\n})(scope);\n</script>","output":"str","x":670,"y":200,"wires":[["a111562a.d4f948"]]},{"id":"a111562a.d4f948","type":"http response","z":"11a1f4fa.478f8b","name":"","statusCode":"200","headers":{},"x":900,"y":200,"wires":[]}]

1 Ответ

1 голос
/ 03 марта 2020

Узел template, который вы используете в этом потоке, является , а не узлом, предоставленным приборной панелью Node-RED.

Узел приборной панели RED предоставляет узел ui_template, Панель инструментов категории палитры. Однако вы бы не использовали узел ui_template в середине потока HTTP In / HTTP Response, который у вас здесь есть. Узел ui_template может использоваться только как часть панели инструментов Node-RED.

Вы используете узел template, предоставляемый ядром Node-RED. Этот узел используется для генерации текста c из шаблона. Он использует синтаксис усов, чтобы позволить вам вставлять значения из сообщения, переданного узлу, а затем возвращает текст, сгенерированный из шаблона.

Поэтому, если вы хотите вставить значения из msg, переданные в шаблон перейдите в раздел <script> шаблона, затем вы по-прежнему будете использовать тот же синтаксис усов. Имеется шаблон:

This is the payload: {{payload.data1}} !
<script>
console.log("{{payload.data1}}");
console.log("{{payload.data2}}");
</script>

Если вы передадите пример сообщения из вашего потока:

msg.payload = {
   'data1': 15,
   'data2': 20
}

Тогда узел шаблона вернется:

This is the payload: 15 !
<script>
console.log("15");
console.log("20");
</script>
...