赞
踩
Function 节点是 Node-RED 中非常重要的一个节点,允许用户使用 JavaScript 编写自定义代码,以实现复杂的数据处理和逻辑控制。通过 Function 节点,用户可以灵活地操作消息数据,进行数据转换、条件判断等。
在 Node-RED 编辑器中,从左侧节点库中拖拽 Function 节点到画布上。
• 双击节点打开配置窗口。
• 输入节点名称(可选)。
• 在函数输入框中编写 JavaScript 代码。例如,将消息 payload 转换为大写:
- msg.payload = msg.payload.toUpperCase();
- return msg;
• 保存配置。
透过以上步骤就完成了一个最基础的function节点的应用,将传入的payload转换为大写。在function节点中还有很多的细节功能,接下来将介绍其中几个比较常用的功能。
当我们需要在function节点中创建多个输出时,在设置页签可以指定function节点的输出数量,如下图所示
在默认的情况下function节点只有一个输出,并直接返回msg对象进行输出,在设置了多个输出后需要在函数中返回一个数组,这个数组中的每一个元素对应着function节点的一个输出。
在某些情况下我们希望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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。