Object对象在Node中显示--红色网页

Object object is displaying in Node--red webpage

使用节点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":[]
}
]

听起来您想 POST 您的传感器数据到 node-red 流?每当您使用 http in 节点开始流程时,您需要以 http response 结束该流程(not http request -- 这是为了调用到另一个 http 端点)。您还需要确保重复使用味精 object 并保留 req/res headers.

由于函数的输出在调试节点中显示了正确的字符串,因此您只需要 return 与 http response 节点相同的字符串。在上面的示例中,如果您想在浏览器中键入 url http://servername/rand,则必须为 GET 请求配置 http in 节点。在这种情况下,http in 节点的输出负载将为空,因此您的函数不会执行您期望的操作。但是,如果您为 POST 请求配置它,那么您将需要以编程方式发送数据,而不是从浏览器。

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