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 侧边栏中查看。
默认情况下,Debug 节点将显示 msg.payload
属性,但可以配置为显示任何属性或整个消息。
当显示数组或对象时,侧边栏提供了一个结构化视图,可用于探索消息。
msg.payload
。Object
, String
, Array
等。当您将鼠标悬停在任何元素上时,右侧会显示一组按钮:
: 将选定元素的路径复制到剪贴板。在此示例中,它将复制 payload.Phone[2].type
。这使您可以快速确定如何在 Change 或 Function 节点中访问属性。
: 将元素的值作为 JSON 字符串复制到剪贴板。请注意,侧边栏会截断超过一定长度的数组和缓冲区。复制此类属性的值将复制截断的版本。
: 钉住选定的元素,使其始终显示。当从同一个 Debug 节点接收到另一条消息时,它会自动展开以显示所有已钉住的元素。
JSON(JavaScript 对象表示法)是表示 JavaScript 对象为字符串的标准方式。它通常被 Web API 用于返回数据。
如果消息属性包含 JSON 字符串,则必须先将其解析为等效的 JavaScript 对象,然后才能访问其包含的属性。要确定属性是包含字符串还是对象,可以使用 Debug 节点。
Node-RED 提供了一个 JSON
节点来完成此转换。
流中的常见任务是修改消息在节点之间传递时的属性。例如,HTTP Request
的结果可能是一个具有许多属性的对象,其中只需要一部分。
有两个主要节点用于修改消息:Function 节点和 Change 节点。
Function 节点允许您对消息运行任何 JavaScript 代码。这使您可以完全灵活地处理消息,但需要熟悉 JavaScript,并且对于许多简单情况而言是不必要的。有关编写函数的更多信息,请参阅此处。
Change 节点提供了大量功能,无需编写 JavaScript 代码。它不仅可以修改消息属性,还可以访问流和全局上下文。
它提供四种基本操作:
设置
属性为一个值,更改
字符串属性通过执行搜索和替换,删除
属性,移动
属性。对于 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
节点的动作0.18 版新增
根据属性值或 JSONata 表达式结果对序列进行排序。
0.18 版新增
从收到的消息创建新的消息序列。
该节点提供三种操作模式:
msg.topic
属性来标识它。节点配置了一个主题值列表,以标识序列连接的顺序。版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 已注册商标并使用商标。有关 OpenJS Foundation 的商标列表,请参阅我们的商标政策和商标列表。未在OpenJS Foundation 商标列表上指明的商标和徽标是其各自所有者的商标™或注册®商标。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策