3. 订单筛选#
在工作流程的这一步中,您将学习如何使用条件逻辑过滤数据,以及如何在节点中使用表达式,通过If节点实现。
完成此步骤后,您的工作流应如下所示:
为了仅将处理中的订单插入Airtable,我们需要按orderStatus筛选数据。本质上,我们希望告诉程序如果orderStatus是processing,那么将所有具有此状态的记录插入Airtable;否则,例如如果orderStatus不是processing,则计算所有其他orderStatus(booked)订单的总和。
这个if-then-else命令是条件逻辑。在n8n工作流中,您可以使用If节点添加条件逻辑,该节点基于比较操作有条件地拆分工作流。
If 语句 vs. Switch 语句
如果需要基于布尔值(真与假)以外的条件筛选数据,请使用Switch节点。Switch节点与If节点类似,但支持多个输出连接器。
在Airtable节点前添加If节点#
首先,在HTTP Request节点到Airtable节点的连接之间添加一个If节点:
- 将鼠标悬停在连接HTTP Request节点和Airtable节点的箭头上。
- 在HTTP Request节点和Airtable节点之间选择+号。
配置If节点#
点击加号将移除与Airtable节点的HTTP请求连接。现在,让我们添加一个连接到HTTP请求节点的If节点:
- 搜索If节点。
- 当它在搜索结果中出现时,请选择它。
对于If节点,我们将使用一个表达式。
表达式
一个表达式是编程语言中的一串字符和符号,可以根据其输入进行计算以获取值。在n8n工作流中,您可以在节点中使用表达式来引用另一个节点以获取输入数据。在我们的示例中,If节点引用了HTTP Request节点输出的数据。
在If节点窗口中,配置以下参数:
-
按照以下步骤将占位符
value1设置为{{ $json.orderStatus }}: -
操作: 选择 字符串 > 等于
- 将
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 🙋: 哦,这很有帮助。你能从处理中的订单里只选择两个字段吗?
你 👩🔧: 好的,我将在下一步完成这个操作。

