Node-RED 提供了一种存储信息的方法,这些信息可以在不使用流中传递的消息的情况下在不同节点之间共享。这被称为“上下文”。
特定上下文值的“作用域”决定了它与谁共享。有三个上下文作用域级别
任何特定值的范围选择将取决于其使用方式。
如果一个值只需要由单个节点(例如函数节点)访问,那么节点上下文就足够了。
通常,上下文允许在多个节点之间共享某种状态。例如,传感器可能在一个流中定期发布新值,而您希望创建一个单独的 HTTP 触发流来返回最新值。通过将传感器读数存储在上下文中,HTTP 流就可以返回该值。
全局上下文可以通过设置文件中的 functionGlobalContext
属性预配置值。
flow
上下文由这些节点共享,而不是子流所在的流。从 Node-RED 0.20 开始,子流内部的节点可以通过在上下文键前加上 $parent.
来访问父流的上下文。例如var colour = flow.get("$parent.colour");
默认情况下,上下文仅存储在内存中。这意味着其内容在 Node-RED 重新启动时会被清除。通过 0.19 版本,可以配置 Node-RED 以保存上下文数据,以便在重新启动后仍然可用。
settings.js
中的 contextStorage
属性可用于配置上下文数据的存储方式。
Node-RED 为此提供了两个内置模块:memory
和 localfilesystem
。还可以创建自定义存储插件以将数据存储在其他位置。
要启用基于文件的存储,可以使用以下选项
contextStorage: {
default: {
module: "localfilesystem"
}
}
这会将默认上下文存储设置为 localfilesystem
插件的一个实例,并使用其所有默认设置。这意味着
~/.node-red/context/
下的文件中settings.js
文件可能没有 contextStorage
的示例条目。如果是这种情况,您可以复制上面的示例并自行添加。可以配置多个存储,以便某些值保存到本地文件系统,而另一些值仅保存在内存中。
例如,要将默认存储配置为仅内存,并将第二个存储配置为文件系统,可以使用以下选项
contextStorage: {
default: "memoryOnly",
memoryOnly: { module: 'memory' },
file: { module: 'localfilesystem' }
}
在此示例中,default
属性告诉 Node-RED,如果访问上下文的请求没有指定存储,则使用哪个存储。
有关内置模块、它们提供的配置选项以及如何创建自定义模块的完整详细信息,请参阅API 页面。
设置上下文中值的最简单方法是使用更改节点。例如,以下更改节点规则将 msg.payload
的值存储在 flow
上下文中,键为 myData
。
各种节点可以直接访问上下文。例如,注入节点可以配置为注入上下文值,并且开关节点可以根据上下文中存储的值路由消息。
如果您配置了多个上下文存储,UI 将允许您选择将值存储在哪个存储中。
编写函数指南描述了如何在函数节点中使用上下文。
创建节点指南描述了如何在自定义节点中使用上下文。
可以使用设置为删除的更改节点永久删除上下文。
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 已注册商标并使用商标。有关 OpenJS Foundation 商标的列表,请参阅我们的商标政策和商标列表。未在OpenJS Foundation 商标列表中指明的商标和徽标是其各自持有人的商标™ 或注册® 商标。使用它们不表示与他们有任何关联或得到他们的认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策