node-red 无法在 JS 标签下的模板节点上获取 msg.payload

node-red cannot get msg.payload on template node unde JS tag

我正在尝试在 JS 标记内的模板节点中获取有效负载数据。
模板节点不是 仪表板 库的一部分。
在JS代码之外,您可以使用小胡子标签{{.}}获取有效载荷。
知道如何在 JS 代码中获取数据吗? 这些是节点: 这是它的代码:

[{"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":[]}]

您在该流程中使用的 template 节点不是 Node-RED Dashboard 提供的节点。

Node-RED 仪表板提供 ui_template 节点,该节点位于面板的仪表板类别中。但是,您不会在此处的 HTTP In/HTTP Response 流中间使用 ui_template 节点。 ui_template 节点只能用作 Node-RED 仪表板的一部分。

您正在使用 Node-RED 核心提供的 template 节点。此节点用于从模板生成静态文本。它使用 mustache 语法允许您从传递到节点的消息中插入值,然后 returns 从模板生成的文本。

因此,如果您想将传递给模板节点的 msg 中的值插入到模板的 <script> 部分,那么您仍然使用相同的 mustache 语法。给定模板:

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

如果您传入流中的示例消息:

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

那么模板节点将return:

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