在 Node-red 使用中,节点的认识与使用是重中之重,节点是构成流程的重要组成。
目录
1、通用节点
1.1 inject节点
手动或定期得将消息注入流中。消息的有效荷载可以为多种类型,包括字符串,JavaScript对象或当前时间。
消息的有效荷载一般情况存放在 msg.payload 中,但是在使用时,我们可以根据自己的需求决定把数据存储在哪。
注意:选项“时间间隔” 和“特定时间” 使用了标准cron系统。这意味着因此“20分钟”并不表示在此之后20分钟,而是每小时的20分钟,40分钟。如果您希望设定为从现在开始的每20分钟,那么请使用“间隔” 选项。
注意: 如果您想在字符串中包含换行符,必须使用“功能”节点创建有效荷载。
1.2 debug节点
在“调试”侧边栏选项卡和运行时日志中显示选定的消息属性。 默认情况下,它会显示msg.payload
的值,但您也可以将其设置成显示任意属性,完整消息或JSONata表达式的结果。
输出:msg.payload 则会打印出该数据的 payload 数据,也可根据自己需求修改,名称的对应如下图所示。
1.3 complete节点
当另一个节点完成对消息的处理时触发流,这个节点可以与没有输出端口的节点一起使用,例如在使用电子邮件发送节点来发送邮件后触发一个流。
1.4 catch节点
捕获由同一标签页上的节点引发的错误。
1.5 status节点
获取在同一标签页上的其他节点的状态消息。
1.6 link in 和 link out节点
在流之间创建虚拟连线,类似于网络标号,使得整个流程框图更加美观、简洁。
2、功能节点
2.1 function 节点
定义对接收到的消息进行处理的JavaScript代码(函数的主体)。
该节点较为重要:大部分的数据处理、逻辑处理都由该节点来实现。
如果需要上一节点传递的值或对象,则先将数据获取,再修改赋值操作。下方是一个简单的生成随机数的使用,把时间戳用作触发使用,并未使用到时间戳中的数据,且把随机生成的数据存放在 msg.payload 中用于 debug 节点中。
[
{
"id": "bf71b31636ce46d9",
"type": "tab",
"label": "流程 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "c45bf53c088e465b",
"type": "inject",
"z": "bf71b31636ce46d9",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "1",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "object",
"payloadType": "date",
"x": 160,
"y": 120,
"wires": [
[
"d2cf86b502c9bad7"
]
]
},
{
"id": "85c422a1a241ef71",
"type": "debug",
"z": "bf71b31636ce46d9",
"name": "debug 6",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 160,
"y": 380,
"wires": []
},
{
"id": "46f8fe31cd8ccf48",
"type": "link in",
"z": "bf71b31636ce46d9",
"name": "link in 1",
"links": [
"d2cf86b502c9bad7"
],
"x": 75,
"y": 260,
"wires": [
[
"02fd03693ff32245"
]
]
},
{
"id": "d2cf86b502c9bad7",
"type": "link out",
"z": "bf71b31636ce46d9",
"name": "link out 1",
"mode": "link",
"links": [
"46f8fe31cd8ccf48"
],
"x": 245,
"y": 120,
"wires": []
},
{
"id": "02fd03693ff32245",
"type": "function",
"z": "bf71b31636ce46d9",
"name": "function 1",
"func": "\n\n//生成从minNum到maxNum的随机数\nfunction randomNum(minNum,maxNum){ \n switch(arguments.length){ \n case 1: \n return parseInt(Math.random()*minNum+1,10); \n break; \n case 2: \n return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10); \n break; \n default: \n return 0; \n break; \n } \n} \n\nmsg.payload = randomNum(10,100);\n\n\nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 180,
"y": 260,
"wires": [
[
"85c422a1a241ef71"
]
]
}
]
2.2 switch 节点
按属性值来分配消息的传送路线,有几个判断条则有几个输出接口。
2.3 change 节点
设置,更改,删除或移动消息,流上下文或全局上下文的属性。
2.4 range 节点
将数值映射为另一个区间的数值。如果有 js 基础,可以直接使用一个 function 实现,如 2.1 所示。下方本节点 function 函数的代码。
msg.payload = Math.random();
return msg;
2.5 template 节点
根据提供的模板设置属性,可以用于网页响应。
http in 节点配置,后面再详细介绍该节点使用。
响应代码
响应结果
[
{
"id": "bf71b31636ce46d9",
"type": "tab",
"label": "流程 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "89328ccad706c2e0",
"type": "template",
"z": "bf71b31636ce46d9",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "html",
"syntax": "mustache",
"template": "<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<title>title</title>\n</head>\n<body>\n <h1>我的第一个标题</h1>\n <p>我的第一个段落。</p>\n</body>\n</html>",
"output": "str",
"x": 250,
"y": 340,
"wires": [
[
"5e0e21c0aecdd937"
]
]
},
{
"id": "83756ef73c9693e1",
"type": "http in",
"z": "bf71b31636ce46d9",
"name": "",
"url": "/1",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 110,
"y": 340,
"wires": [
[
"89328ccad706c2e0"
]
]
},
{
"id": "5e0e21c0aecdd937",
"type": "http response",
"z": "bf71b31636ce46d9",
"name": "",
"statusCode": "",
"headers": {},
"x": 390,
"y": 340,
"wires": []
}
]
下期出 网络节点 使用,欢迎关注。
谢谢观看学习!!!
希望可以帮助到大家!!!