Node-Red:如何过快地停止节点处理?
Node-Red: How to stop nodes processing too quickly?
我目前正在 MS Excel 中创建一个仪表板,使用 Node-RED 从源系统获取数据。为了不必一直导入所有收集的数据,我创建了一个流程,使用“node-red-contrib-fs-ops 1.6”检查文件(特别是“ImportSuccess.csv”)是否存在。 0”,特别是 fs-ops-access。
如果否,则消息将进入一个连接节点并附加到一个数组。
如果是,那么ImportSuccess.csv应该被删除,触发这个的消息会得到“msg.complete”属性,并被传递到前面提到的Join-Node并触发它发送出去整个数组到一个 csv 文件中,覆盖它以前的内容。在 Excel 中,然后我从该 csv 文件中获取数据并创建一个新的“ImportSuccess.csv”来与 Node-RED 通信,告知我的工具已准备好接收新一批数据。
出现以下问题:由于检查是否存在和删除文件是两个不同的步骤,第二条消息可以成功通过存在性检查,导致存储 csv 文件被双重覆盖,从而导致数据丢失.
有没有办法防止这种情况发生?
流程图:
根据我的理解,在下一条消息通过“文件访问”节点之前,我需要“强制”上层分支完全完成。
通过编写我自己的功能节点找到解决方案 - ty 用于签入
编辑:如何使用函数节点解决问题
在 functionGlobalContext
下使用 fs: require("fs") 编辑 Settings.js
编写函数节点如下:
var fs = global.get("fs");
var path = "Your Path";
if fs.existsSync(path){
>Add attribute "complete" to msg for the Join Node to detect and trigger sending
msg.complete = Boolean(1);
>Delete File
fs.unlinkSync(path);
}
return msg;
我目前正在 MS Excel 中创建一个仪表板,使用 Node-RED 从源系统获取数据。为了不必一直导入所有收集的数据,我创建了一个流程,使用“node-red-contrib-fs-ops 1.6”检查文件(特别是“ImportSuccess.csv”)是否存在。 0”,特别是 fs-ops-access。
如果否,则消息将进入一个连接节点并附加到一个数组。
如果是,那么ImportSuccess.csv应该被删除,触发这个的消息会得到“msg.complete”属性,并被传递到前面提到的Join-Node并触发它发送出去整个数组到一个 csv 文件中,覆盖它以前的内容。在 Excel 中,然后我从该 csv 文件中获取数据并创建一个新的“ImportSuccess.csv”来与 Node-RED 通信,告知我的工具已准备好接收新一批数据。
出现以下问题:由于检查是否存在和删除文件是两个不同的步骤,第二条消息可以成功通过存在性检查,导致存储 csv 文件被双重覆盖,从而导致数据丢失.
有没有办法防止这种情况发生?
流程图:
根据我的理解,在下一条消息通过“文件访问”节点之前,我需要“强制”上层分支完全完成。
通过编写我自己的功能节点找到解决方案 - ty 用于签入
编辑:如何使用函数节点解决问题
在 functionGlobalContext
下使用 fs: require("fs") 编辑 Settings.js编写函数节点如下:
var fs = global.get("fs");
var path = "Your Path";
if fs.existsSync(path){
>Add attribute "complete" to msg for the Join Node to detect and trigger sending
msg.complete = Boolean(1);
>Delete File
fs.unlinkSync(path);
}
return msg;