3. 过滤订单#
在工作流的这一步中,您将学习如何使用条件逻辑过滤数据,以及如何使用 If 节点 在节点中使用表达式。
完成此步骤后,您的工作流应该如下所示:
要仅将处理中的订单插入 Airtable,我们需要按 orderStatus
过滤我们的数据。基本上,我们想告诉程序,如果 orderStatus
是 processing,那么 将所有具有此状态的记录插入 Airtable;否则,例如,如果 orderStatus
不是 processing,则计算具有其他 orderStatus
(booked
)的所有订单的总和。
这个 if-then-else 命令是条件逻辑。在 n8n 工作流中,您可以使用 If 节点 添加条件逻辑,该节点根据比较操作有条件地拆分工作流。
If vs. Switch
如果您需要基于布尔值(true 和 false)以外的值过滤数据,请使用 Switch 节点。Switch 节点类似于 If 节点,但支持多个输出连接器。
在 Airtable 节点之前添加 If 节点#
首先,让我们在从 HTTP 请求节点到 Airtable 节点的连接之间添加一个 If 节点:
- 将鼠标悬停在连接 HTTP 请求 节点和 Airtable 节点的箭头上。
- 选择 HTTP 请求节点和 Airtable 节点之间的 + 号。
配置 If 节点#
选择加号会删除与 Airtable 节点到 HTTP 请求的连接。现在,让我们添加一个连接到 HTTP 请求节点的 If 节点:
- 搜索 If 节点。
- 当它出现在搜索中时选择它。
对于 If 节点,我们将使用表达式。
表达式
表达式是编程语言中可以根据其输入进行评估以获得值的字符和符号字符串。在 n8n 工作流中,您可以在节点中使用表达式来引用另一个节点的输入数据。在我们的示例中,If 节点引用 HTTP 请求节点输出的数据。
在 If 节点窗口中,配置参数:
-
通过以下步骤将
value1
占位符设置为{{ $json.orderStatus }}
: -
操作:选择 String > is equal to
- 将
value2
占位符设置为processing
。
数据类型
当您选择操作时,请确保选择正确的数据类型(布尔值、日期和时间、数字或字符串)。
选择执行步骤来测试 If 节点。
您的结果应该如下所示:

注意,具有 processing
订单状态的订单应该显示在 True Branch 输出中,而具有 booked
订单状态的订单应该显示在 False Branch 输出中。
完成后关闭 If 节点详细视图。
将数据插入 Airtable#
接下来,我们想将这些数据插入 Airtable。记住 Nathan 在将数据插入 Airtable 课程结束时说的话吗?
我实际上只需要在表格中插入处理中的订单...
由于 Nathan 只需要表格中的 processing
订单,我们将把 Airtable 节点连接到 If 节点的 true
连接器。
在这种情况下,由于 Airtable 节点已经在我们的画布上,选择 If 节点 true
连接器并将其拖动到 Airtable 节点。
此时重新测试 Airtable 节点是个好主意。在此之前,打开您在 Airtable 中的表格并删除所有现有行。然后在 n8n 中打开 Airtable 节点窗口并选择执行步骤。
在 Airtable 中查看您的数据,确保您的工作流只添加了正确的订单(那些 orderStatus
为 processing
的订单)。现在应该有 14 条记录而不是 30 条。
在这个阶段,您的工作流应该如下所示:
接下来做什么?#
Nathan 🙋:这个 If 节点对于过滤数据非常有用!现在我有了关于处理中订单的所有信息。我实际上只需要 employeeName
和 orderID
,但我想我可以保留所有其他字段以防万一。
您 👩🔧:实际上,我不建议这样做。插入更多数据需要更多计算能力,数据传输更慢且需要更长时间,并且在您的表格中占用更多存储资源。在这种特殊情况下,14 条记录和 5 个字段可能看起来不会产生显著差异,但如果您的业务增长到数千条记录和数十个字段,事情会累积起来,即使一个额外的列也会影响性能。
Nathan 🙋:哦,这很好知道。您能从处理中的订单中只选择两个字段吗?
您 👩🔧:当然,我会在下一步中做到这一点。