对象对象显示在节点红色网页中

时间:2018-06-30 08:29:54

标签: node-red

使用节点红色将功能节点的o / p注入html模板

这是我的流程

 [
{"id":"b9787755.ece25",
"type":"http in",
"z":"77c9615d.84a36",
"name":"httpin",
"url":"/rand",
"method":"get",
"upload":false,
"swaggerDoc":"",
"x":210,
"y":220,
"wires":[["413c2211.ae5254"]]
},
{
"id":"116ae20e.efc5a6",
"type":"template",
"z":"77c9615d.84a36",
"name":"",
"field":"payload",
"fieldType":"msg",
"format":"handlebars",
"syntax":"mustache",
"template":"Hello Random - {{ payload}}",
"x":540,
"y":260,
"wires":[["6e6cb7b7.a71f7"]]},
{"id":"6e6cb7b7.a71f7",
"type":"http response",
"z":"77c9615d.84a36",
"name":"http response",
"x":708,
"y":217.00003051757812,
"wires":[]
},
{
"id":"53ef12d8.fa353c",
"type":"inject",
"z":"77c9615d.84a36",
"name":"Inject1",
"topic":"Topic1",
"payload":"hello world",
"payloadType":"str",
"repeat":"2",
"crontab":"",
"once":true,
"onceDelay":"2",
"x":120,
"y":100,
"wires":[["413c2211.ae5254"]]
},
{
"id":"413c2211.ae5254",
"type":"function",
"z":"77c9615d.84a36",
"name":"Random Fn",
"func":"var context=\"\"\ncontext = \"hi\"+msg.payload.toString()+\"hi\"\nmsg.payload=context\nreturn msg\n",
"outputs":1,
"noerr":0,
"x":470,
"y":140,
"wires":[["5b901ff7.344e3",
"116ae20e.efc5a6"]]},{"id":"5b901ff7.344e3",
"type":"debug",
"z":"77c9615d.84a36",
"name":"Debug1",
"active":true,
"tosidebar":true,
"console":false,
"tostatus":false,
"complete":"payload",
"x":679.0000610351562,
"y":154,
"wires":[]
}
]

1 个答案:

答案 0 :(得分:0)

所以听起来您想将传感器数据发布到节点红色流中?每当您以http in节点开始流时,都需要以http response不是 http request)结束该流,这是为了调出另一个http端点)。您还需要确保重用msg对象并保留req / res标头。

由于函数的输出在调试节点中显示了正确的字符串,因此只需要使用http response节点返回相同的字符串。在上面的示例中,要在浏览器中键入URL http://servername/rand,则必须为http in请求配置GET节点。在这种情况下,http in节点的输出有效负载将为空,因此您的函数将无法达到您的期望。但是,如果为POST请求配置它,则将需要以编程方式发送数据,而不是从浏览器发送数据。

最后,听起来您需要两个流程-一个POST侦听器,它接收传入的传感器数据并将其存储在数据库中(或某个地方),以及一个GET侦听器,它接收传入的req参数,构建SQL Select ...语句,并返回查询结果。对于POST流,即使您不返回任何数据,仍然需要使用200 OK代码进行响应。