Node-RED流程通过节点间传递消息来工作。消息是简单的JavaScript对象,可以包含任意属性集。
消息通常包含一个payload
属性 - 这是大多数节点默认处理的主要属性。
Node-RED 还添加了一个名为 _msgid
的属性 - 这是消息的标识符,可用于追踪其在流程中的进度。
{
"_msgid": "12345",
"payload": "..."
}
属性的值可以是任何有效的JavaScript类型,例如:
true
, false
0
, 123.4
"hello"
[1,2,3,4]
{ "a": 1, "b": 2}
理解消息结构最简单的方法是将其传递给Debug节点并在Debug侧边栏中查看。
默认情况下,调试节点会显示msg.payload
属性,但也可以配置为显示任何属性或整个消息。
当显示数组或对象时,侧边栏提供了一个结构化视图,可用于浏览消息内容。
msg.payload
。Object
, String
, Array
等。当您将鼠标悬停在任意元素上时,右侧会出现一组按钮:
: 将所选元素的路径复制到剪贴板。在此示例中,它将复制payload.Phone[2].type
。这使您能快速确定如何在Change或Function节点中访问某个属性。
: 将该元素的值以JSON字符串形式复制到剪贴板。请注意,侧边栏会截断超过一定长度的数组和缓冲区。复制此类属性的值将复制截断后的版本。
: 将选中的元素固定显示。当从同一个Debug节点接收到另一条消息时,它会自动展开显示所有被固定的元素。
JSON(JavaScript Object Notation)是一种将JavaScript对象表示为字符串的标准方式。它通常被网络API用于返回数据。
如果消息属性包含JSON字符串,必须先将其解析为等效的JavaScript对象,才能访问其中包含的属性。要判断属性是字符串还是对象,可以使用Debug节点。
Node-RED 提供了一个 JSON
节点来完成这种转换。
在流程中一个常见的任务是在消息在节点之间传递时修改其属性。例如,HTTP Request
的结果可能是一个包含许多属性的对象,但其中只有部分属性是需要的。
修改消息主要有两种节点:Function节点和Change节点。
Function节点允许您对消息运行任何JavaScript代码。这为您处理消息提供了完全的灵活性,但需要熟悉JavaScript,并且在许多简单情况下并非必要。有关编写函数的更多信息,请参阅此处。
Change节点提供了丰富的功能,无需编写JavaScript代码。它不仅可以修改消息属性,还能访问流上下文和全局上下文。
它提供四种基本操作:
Set
将属性设置为某个值,Change
通过执行搜索和替换来更改字符串属性,Delete
删除一个属性,Move
移动一个属性。对于set
操作,首先需要指定要设置的属性,然后定义该属性的值。这个值可以是硬编码的固定值(例如字符串或数字),也可以来自其他消息或流程/全局上下文属性。该操作还支持使用JSONata表达式语言来计算新值。
例如,利用Debug节点确定消息元素路径的功能,您可以直接将路径粘贴到'to'字段中,并从列表中选择msg.
。这样就会将msg.payload
的值设置为msg.payload.Phone[2].type
的值。
另一个例子是使用JSONata表达式,将存储在msg.payload.temperature
中的温度值从华氏度转换为摄氏度,并将结果存储在新的消息属性msg.payload.temperature_c
中。
{
"payload": {
"temperature": 90,
"temperature_c": 32.22222
}
}
请注意,JSONata表达式看起来很像JavaScript,但有一些关键区别。
更多信息请参考jsonata.org网站。
消息序列是一组以某种方式相关联的有序消息。例如,Split节点可以将一个payload
为数组的单个消息转换为消息序列,其中每条消息的payload
对应数组中的一个元素。
msg.parts
序列中的每条消息都有一个名为msg.parts
的属性。这是一个包含消息如何适应序列信息的对象。它具有以下属性:
msg.parts.id
msg.parts.index
msg.parts.count
注意: parts数组可能包含关于该序列的额外元数据。例如,
split
节点还会附加一些信息,这些信息可以被join
节点用来
重新组装序列。详情请参阅split
节点的文档。
有一些核心节点可以跨消息序列工作:
将单条消息转换为一系列消息。
该节点的具体行为取决于msg.payload
的类型:
将一系列消息转换为单个消息。
该节点提供三种操作模式:
Split
node0.18版本新增
根据属性值或JSONata表达式结果对序列进行排序。
0.18版本新增
根据接收到的消息创建新的消息序列。
该节点提供三种操作模式:
msg.topic
property to
identify it. The node is configured with a list of topic values to identify
the order sequences are concatenated.Node-RED: 面向事件驱动应用的低代码编程平台。
版权所有 OpenJS基金会 及 Node-RED 贡献者。保留所有权利。OpenJS基金会 拥有注册商标并使用商标。有关 OpenJS基金会 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS基金会商标列表 中标注的商标™或注册®商标归其各自持有人所有。使用这些商标并不意味着与它们有任何关联或获得其认可。
The OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS基金会章程 | 商标政策 | 商标列表 | Cookie政策