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 代码进行响应。
使用节点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 代码进行响应。