优秀的编程知识分享平台

网站首页 > 技术文章 正文

Node-red Function&注入功能介绍

nanyue 2024-10-04 18:23:09 技术文章 16 ℃

Function

定义对接收到的消息进行处理的JavaScript代码(函数的主体)。

输入消息在名为msg的JavaScript对象中传递。

通常,msg对象将消息正文保留在msg.payload属性中。

该函数一般会返回一个消息对象(或多个消息对象),但也可以为了停止流而什么都不返回。

详细

请参见在线文档来获得更多有关编写函数的信息。

传送消息

要将消息传递到流中的下一个节点,请返回消息或调用node.send(messages)。

它将返回/send:

  • 单个消息对象 - 传递给连接到第一个输出的节点
  • 消息对象数组,传递给连接到相应输出的节点

如果数组元素是数组,则将多个消息发送到相应的输出。

无论return方法是单个值还是数组元素,如果返回值为null,则不会发送任何消息。

日志输出和错误处理

使用以下功能输出日志信息和输出错误:

  • node.log("Log message")
  • node.warn("Warning")
  • node.error("Error")

使用catch节点可以进行错误处理。 要由catch节点处理,请将msg作为node.error的第二个参数传递:

node.error("Error",msg);

访问节点信息

您可以使用以下属性来在代码中引用节点ID和名称:

  • node.id - 节点的ID
  • node.name - 节点的名称

使用环境变量

环境变量可以通过env.get("MY_ENV_VAR")来进行访问


inject

手动或定期得将消息注入流中。消息的有效荷载可以为多种类型,包括字符串,JavaScript对象或当前时间。

输出

payloadvarious

指定的消息的有效荷载。

topic字符串

可以在节点中配置的可选属性。

详细

通过使用特定的有效荷载,注入节点可以启动流。默认有效荷载是当前时间的时间戳(以毫秒为单位,自1970年1月1日起)。

该节点还支持注入字符串,数字,布尔值,JavaScript对象或流/全局上下文值。

默认情况下,节点可以通过在编辑器中单击节点按钮来手动触发。同时也可以被设置为定期或按计划注入。

另一个可选的设置是在每次启动流时注入一次。

可以指定的最大间隔约为596小时/24天。 但是,如果对于间隔超过一天的那些间隔,建议您使用scheduler节点来应对断电或重启。

注意:选项“时间间隔” “特定时间” 使用了标准cron系统。这意味着因此“20分钟”并不表示在此之后20分钟,而是每小时的20分钟,40分钟。如果您希望设定为从现在开始的每20分钟,那么请使用“间隔” 选项。

注意: 如果您想在字符串中包含换行符,必须使用“功能”节点创建有效荷载。

示例:加入Function节点,功能程序(循环+1)如下:

// initialise the counter to 0 if it doesn't exist already

var count = context.get('count')||0;

count += 1;

// store the value back

context.set('count',count);

// make it part of the outgoing msg object

msg.count = count;

return msg;



通过Change节点,将msg值注入变量Flow,这样在其余地方就可以引用该变量。


最近发表
标签列表