node-red全局变量(永久)存储

1
  存储在 context、flow 和 glbal 变量中的数据称为上下文数据,node-red的上下文数据通常存储在内存中。这意味着如果您重新启动流程,数据将丢失。
  然而,从 0.19 版本开始,node-red支持将上下文数据存储在文件系统中。详细介绍设置过程如下:

一、前期准备

  需要安装node.js和node-red:

  1. win10环境安装
  1. linux环境安装

二、设置 - 将上下文数据存储在文件系统中

  1. 查看node-red的目录,不知道目录在哪的话可以通过启动时控制台打印的信息查看:
    1
  2. 修改配置文件settings.js:
vi    /安装目录/.node-red/settings.js
#示例
vi    /root/.node-red/settings.js

1
在node-red的配置文件中有一段被注释掉的条目是设置上下文文件存储的,默认是注释掉的,只要给它解注就行:
1
3. 重启node-red服务:

pm2 restart node-red
# 或者
node-red 

所以如果你使用:var count=global.get("count");
将从内存中检索计数变量并从文件存储中获取计数变量使用:global.get("count", "file");
存储数据使用:global.set("count", count,"file");
系统将变量存储在.node-red文件夹下名为context的文件夹中的 JSON 文件中。
1
1

  • 需要注意的是:即使您将数据存储在文件系统中,仍然可能丢失数据,因为数据默认仅每 30 秒刷新一次到文件系统。

您可以更改此设置(并非真正需要),其他配置选项请参阅此处的文档

三、全局变量 - 注意异步操作和并发问题

  需要注意的是,由于全局变量是在整个工作流中共享的,因此需要谨慎使用。如果在设置全局变量时没有考虑并发性问题,可能会导致数据竞争和其他问题。因此,在使用全局变量时,需要特别小心,并确保正确地处理异步操作和并发性问题。

### 回答1: 可以通过global对象来定义和访问全局变量。您可以在任何流程或节点中使用这些全局变量。在节点中可以使用msg对象的global属性来访问全局变量,如下所示: global.set("myGlobalVar", "my global value"); var myGlobalVar = global.get("myGlobalVar"); 这样就可以在不同的节点中使用同一个全局变量来传递数据。 ### 回答2: Node-RED是一个用于构建物联网应用的可视化编程工具,它基于Node.js平台,并支持使用JavaScript进行编程。在Node-RED中,我们可以使用全局变量来保存和共享数据全局变量在整个Node-RED的生命周期中都是可用的,并可以在不同的节点之间进行共享。使用全局变量可以方便地在不同的节点之间传递数据,同时也可以在不同的流程中进行数据的持久化。 在Node-RED中,可以使用`context.global`对象来访问和操作全局变量。通过`context`对象的`global`属性,我们可以在节点中获取和设置全局变量的值。 当我们希望在一个节点中设置一个全局变量时,可以使用`node.context().global`来设置变量的值。例如,我们可以使用以下代码将一个名为`myGlobalVariable`的全局变量设置为`100`: ``` node.context().global.set('myGlobalVariable', 100); ``` 在其他节点中,我们可以通过以下方式来获取全局变量的值: ``` var value = node.context().global.get('myGlobalVariable'); ``` 此时,变量`value`将被赋值为`100`。 需要注意的是,全局变量的作用范围是整个Node-RED实例,因此在不同的用户会话或不同的流程之间都是可见的。因此,在使用全局变量时,需要谨慎考虑并避免命名冲突或误用。同时,全局变量的使用也可能会导致系统的复杂性增加,因此应该谨慎使用,避免滥用。 总的来说,全局变量Node-RED中一种方便的机制,可以用于在节点之间传递数据和进行数据的持久化。通过`context.global`对象,我们可以在不同的节点中获取和设置全局变量的值。但是,需要注意全局变量的作用范围和使用的谨慎性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值