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}
理解消息结构的最简单方法是将其传递给调试节点并在调试侧边栏中查看。
默认情况下,调试节点将显示 msg.payload
属性,但可以配置为显示任何属性或整个消息。
当显示数组或对象时,侧边栏提供了一个结构化视图,可以用来探索消息。
msg.payload
。Object
, String
, Array
等。当您将鼠标悬停在任何元素上时,右侧会出现一组按钮:
: 将选定元素的路径复制到剪贴板。在这个示例中,它将复制 payload.Phone[2].type
。这使您可以快速确定如何在更改或功能节点中访问属性。
: 将元素的值作为 JSON 字符串复制到剪贴板。请注意,侧边栏会截断超出某一长度的数组和缓冲区。复制此类属性的值将复制截断版本。
: 钉住所选元素,使其始终显示。当从相同的调试节点接收到另一条消息时,它会自动展开以显示所有钉住的元素。
JSON (JavaScript 对象表示法)是一种将 JavaScript 对象表示为字符串的标准方式。它通常用于 Web API 返回数据。
如果消息属性包含 JSON 字符串,必须首先将其解析为等效的 JavaScript 对象,然后才能访问它所包含的属性。要确定属性是否包含字符串或对象,可以使用调试节点。
Node-RED 提供了一个 JSON
节点来进行此转换。
在流程中,一项常见任务是修改在节点之间传递的消息属性。例如,HTTP 请求
的结果可能是一个具有许多属性的对象,其中只需要其中一些。
有两个主要节点用于修改消息,功能节点和更改节点。
功能节点允许您对消息运行任何 JavaScript 代码。这使您对消息的处理具有完全的灵活性,但需要熟悉 JavaScript,对于许多简单情况来说并不必要。有关于编写功能的更多信息,请参见 这里。
更改节点提供了很多功能,而无需编写 JavaScript 代码。它不仅可以修改消息属性,还可以访问流程和全局上下文。
它提供了四项基本操作:
设置
属性的值,更改
字符串属性,执行查找和替换,删除
属性,移动
属性。对于 设置
操作,您首先要确定要设置哪个属性,然后是希望它具有的值。该值可以是硬编码值,例如字符串或数字,或者可以来自另一个消息或流程/全局上下文属性。它还支持使用 JSONata 表达式语言计算新值。
例如,使用调试节点确定消息元素路径的能力,您可以将路径直接粘贴到“到”字段中,并从列表中选择 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 网站。
消息序列是一系列按某种方式相关的有序消息。例如,拆分节点可以将 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 政策