Node-RED基础节点探秘:Function节点详细介绍

Node-RED基础节点探秘:Function节点详细介绍

Function 节点是 Node-RED 中非常重要的一个节点,允许用户使用 JavaScript 编写自定义代码,以实现复杂的数据处理和逻辑控制。通过 Function 节点,用户可以灵活地操作消息数据,进行数据转换、条件判断等。

Function 节点的基本用法

1. 添加 Function 节点

在 Node-RED 编辑器中,从左侧节点库中拖拽 Function 节点到画布上。

2. 配置 Function 节点

  • • 双击节点打开配置窗口。

  • • 输入节点名称(可选)。

  • • 在函数输入框中编写 JavaScript 代码。例如,将消息 payload 转换为大写:

msg.payload = msg.payload.toUpperCase();
return msg;
  • • 保存配置。

透过以上步骤就完成了一个最基础的function节点的应用,将传入的payload转换为大写。在function节点中还有很多的细节功能,接下来将介绍其中几个比较常用的功能。

处理多个输出

1. 多输出的设置

当我们需要在function节点中创建多个输出时,在设置页签可以指定function节点的输出数量,如下图所示

图片

在默认的情况下function节点只有一个输出,并直接返回msg对象进行输出,在设置了多个输出后需要在函数中返回一个数组,这个数组中的每一个元素对应着function节点的一个输出。

2. 多个输出中根据条件进行输出

在某些情况下我们希望function的多个输出节点根据函数中的条件进行判断,在不同的条件下触发不同的输出,这种情况我们可以使用null值来阻止对应的输出,比如三个输出中,将第二个元素设置为null则第二个输出不会触发后续的流程,达到阻止某个输出的情况。

图片

循环发送多个消息

前面我们介绍的触发function节点后续流程的方式都是使用return,但是return将会直接对函数进行返回,返回将会阻止后续的代码的继续执行,有时在流程中我们需要处理一个数组中的数据,对数组的数据进行处理后,每个元素都触发后续流程的执行,此时可以使用node.send方法来发送发送消息给后续的流程,且不会中断当前function节点对后续元素的影响。

图片

日志与调试输出

function节点中提供了以下三个方法,可以在function运行时输出不同等级的日志,从而协助我们对function节点进行调试和日志的记录。

注意: node.log 只会输出到node-red的控制台,而不会输出到node-red的调试窗口,node.warn和node.error将会同时输出到node-red的调试窗口

node.log("这是一行普通日志");
node.warn("这是一行警告日志");
node.error("这是一行错误日志");

另外我们还可以使用node.status方法来设置function节点的状态。

node.status({fill:"red",shape:"ring",text:"disconnected"});
node.status({fill:"green",shape:"dot",text:"connected"});
node.status({text:"Just text status"});
node.status({});   // 清空状态

上下文数据

在function节点中除了能使用在change节点中也可以使用的flow/global这两个作用域的上下文数据,还有一个在节点作用域内的上下文数据。使用context变量进行访问。如下图所示使用context变量实现了对节点消息处理次数的统计。

图片

总结

Node-RED 的 Function 节点提供了强大的数据处理和逻辑控制能力。通过本文的详细介绍,希望读者能够全面掌握 Function 节点的使用,包括基本用法、输出处理、多输出创建、循环消息的触发,调试输出及上下文数据的使用。在实际项目中灵活应用这些技巧,可以显著提高开发效率和程序的灵活性。如果有更多的想法,欢迎给我发送消息或留言,Node-RED 社区和官方文档也是很好的资源。

欢迎关注我的公众号“nodered-co”,原创技术文章第一时间推送。

关注公众号并回复“教程”获取约200页"Node-red中文教程"

图片

Node-red function节点官方文档[1]

引用链接

[1] Node-red function节点官方文档: https://nodered.org/docs/user-guide/writing-functions

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Node-RED对于零基础小白来说可能是一项挑战,但是只要按照步骤逐渐学习,对于第一条数据流来说并不复杂。 首先,我们需要了解Node-RED的基本概念和界面结构。在Node-RED中,每个数据流都由一个或多个称为“节点”的功能模块组成,节点之间通过连接线(线性)来传递数据流。我们可以理解节点是执行特定任务的小工具。 要创建第一个数据流,首先打开Node-RED的编辑界面。在界面左侧的面板中选择一个适当的节点作为起始节点,例如“Inject”节点。将该节点拖放到主编辑区,并通过点击连接到其他节点的输入端口来创建连接线。 接下来,选择一个目标节点,例如“Debug”节点,该节点用于在调试过程中显示数据。同样,将该节点拖放到主编辑区,并使用连接线将其与起始节点连接起来。 然后,点击起始节点,可以在右侧面板中设置该节点的功能,例如选择需要发送的消息和发送时间间隔等。 最后,点击编辑界面右上方的“部署”按钮,以保存并部署我们的第一条数据流。在底部状态栏中,我们可以看到数据流的当前状态和任何错误信息。 当我们部署数据流后,起始节点将会按照预设的时间间隔发送消息到目标节点,并显示在Debug节点的输出栏中。 学习Node-RED需要一定的时间和经验积累,建议学习者通过参考官方文档、教程和示例来更深入地了解该技术。同时,多动手实践,通过尝试构建不同的数据流,逐渐熟悉Node-RED的各种功能和节点。 总之,零基础小白学习Node-RED的第一条数据流并不复杂,关键是要有耐心和坚持,不断积累经验和知识,才能在Node-RED中发挥出更大的创造力和效益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值