Node-RED 提供了一种存储信息的方式,这些信息可以在不同节点之间共享,而无需通过流传递消息。这被称为"上下文"。
特定上下文值的"作用域"决定了它与谁共享。共有三个上下文作用域级别:
任何特定值的作用域选择将取决于其使用方式。
如果一个值只需要被单个节点访问,例如Function节点,那么Node上下文就足够了。
通常情况下,上下文允许在多个节点之间共享某种状态。例如,传感器可能在一个流程中定期发布新值,而您希望创建一个单独的HTTP触发的流程来返回最新值。通过将传感器读数存储在上下文中,HTTP流程就可以获取并返回该值。
全局上下文可以通过在设置文件中使用functionGlobalContext属性预先配置值。
flow
context is shared by those nodes and not the flow the subflow is on.
From Node-RED 0.20, the nodes inside a subflow can access the context of the
parent flow by prepending $parent. to the context key. For example:
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 file may not have an example entry for contextStorage.
If that is the case, you can copy the example above and add it yourself.可以配置多个存储,以便将某些值保存到本地文件系统,而另一些仅保留在内存中。
例如,要将默认存储配置为仅内存存储,并为文件系统配置第二个存储,可以使用以下选项:
contextStorage: {
default: "memoryOnly",
memoryOnly: { module: 'memory' },
file: { module: 'localfilesystem' }
}
在这个示例中,default属性告诉Node-RED当访问上下文的请求未指定存储时应该使用哪个存储。
localfilesystem stores, you must set their dir
option so they use different directories to store data. Details on how to configure
the store is available here有关内置模块的完整详情、它们提供的配置选项以及如何创建自定义模块的信息,请参阅api页面。
在上下文中设置值的最简单方法是使用Change节点。例如,
以下Change节点规则将把msg.payload的值存储在flow上下文中,
键名为myData。

多种节点可以直接访问上下文。例如,Inject节点可以配置为注入上下文值,而Switch节点可以根据存储在上下文中的值来路由消息。
如果配置了多个上下文存储,用户界面将允许您选择将值存储在哪个存储中。

编写函数指南描述了如何在Function节点中使用上下文。
创建节点指南描述了如何在自定义节点中使用上下文。
可以通过设置为删除的Change节点永久删除上下文。

Node-RED: 面向事件驱动应用的低代码编程平台。
版权所有 OpenJS基金会 及 Node-RED 贡献者。保留所有权利。OpenJS基金会 拥有注册商标并使用商标。有关 OpenJS基金会 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS基金会商标列表 中标注的商标™或注册®商标归其各自持有人所有。使用这些商标并不意味着与它们有任何关联或获得其认可。
The OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS基金会章程 | 商标政策 | 商标列表 | Cookie政策