【发布时间】:2021-11-26 08:25:29
【问题描述】:
我目前正在 MS Excel 中创建仪表板,使用 Node-RED 从源系统获取数据。为了不必一直导入所有收集的数据,我创建了一个流程,使用“node-red-contrib-fs-ops 1.6.0”检查文件(特别是“ImportSuccess.csv”)是否存在,特别是 fs-ops-access。
如果不是,则消息将进入一个 Join-Node 并附加到一个数组中。
如果是,那么 ImportSuccess.csv 应该被删除,触发它的消息将获得“msg.complete”属性,并将被传递到前面提到的 Join-Node 并触发它将整个数组发送到 csv -file,覆盖其先前的内容。然后,在 Excel 中,我从该 csv 文件中获取数据并创建一个新的“ImportSuccess.csv”以与 Node-RED 通信,表明我的工具已准备好接收新一批数据。
出现以下问题:由于检查存在和删除文件是两个不同的步骤,第二条消息可以成功通过存在检查,这导致存储 csv 文件的双重覆盖,从而导致数据丢失。
有没有办法防止这种情况发生?
流程图:
据我了解,在下一条消息通过“文件访问”节点之前,我需要“强制”上层分支完全完成。
【问题讨论】:
-
在删除之前检查文件属性以查看它是否已更新
-
您能详细说明一下吗?我对 Node-RED 还很陌生。循环的工作方式如下:Excel 创建 ImportSuccess.csv -> Node-RED 找到它,将其删除并将收集的消息发布到临时 csv 文件中,覆盖以前的内容 -> excel 导入新内容并创建新的 ImportSuccess.csv。检查文件属性如何有助于防止两条消息由于异步流而通过上层分支?
标签: node-red