getWorkflowStaticData(type)
访问工作流静态数据。
信息
可以直接在工作流中保存数据,但数据量应较小。
例如,可以保存从 RSS 订阅源或数据库中处理的最后一个数据项的时间戳。此方法始终返回对象,随后可以读取、删除或 设置对象属性。工作流执行成功时,n8n 会自动检查数据 是否变化,并在必要时保存。
静态数据分为全局和节点两种。全局静态数据在整个 工作流中相同,每个节点都可访问。节点静态数据为各节点独有,只有设置它的节点才能再次读取。
只能在 JavaScript Code 节点中使用静态数据,Python Code 节点不提供此功能。
全局数据示例:
// Get the global workflow static data
const workflowStaticData = $getWorkflowStaticData('global');
// Access its data
const lastExecution = workflowStaticData.lastExecution;
// Update its data
workflowStaticData.lastExecution = new Date().getTime();
// Delete data
delete workflowStaticData.lastExecution;
节点数据示例:
// Get the static data of the node
const nodeStaticData = $getWorkflowStaticData('node');
// Access its data
const lastExecution = nodeStaticData.lastExecution;
// Update its data
nodeStaticData.lastExecution = new Date().getTime();
// Delete data
delete nodeStaticData.lastExecution;
模板和示例
改用数据表
数据表可以在 n8n 内存储数据,无需 Code 节点,且测试工作流时也会保留数据。
在数据表中保存最后处理数据项等进度标记的步骤如下:
- 在工作流起点添加 Data Table 节点,通过 Get row(获取行) 操作读取保存的值。
- 在后续节点中通过表达式引用该值,例如
{{ $('Get row').item.json.lastExecution }}。 - 在工作流末尾添加第二个 Data Table 节点,通过 Upsert row(插入或更新行) 操作写入新值。
与静态数据不同,不能在表达式或 Code 节点中直接读取数据表值。需要先通过 Data Table 节点读取行,再引用该节点的输出。
相关资源
Footnotes
本文为社区中文翻译。查看对应英文原文