Skip to content

3. 订单筛选#

在本工作流步骤中,您将学习如何使用条件逻辑过滤数据,以及如何在节点中使用表达式(通过 If 节点)。

完成此步骤后,您的工作流应如下图所示:

为了仅将处理中的订单插入 Airtable,我们需要按 orderStatus 过滤数据。本质上,我们需要告诉程序:如果 orderStatus 是 processing(处理中),那么 将所有该状态的记录插入 Airtable;否则(例如当 orderStatus 不是 processing 时),计算所有其他 orderStatus(如 booked)订单的总和。

这种 if-then-else 指令就是条件逻辑。在 n8n 工作流中,您可以通过 If 节点 添加条件逻辑,该节点会根据比较操作有条件地拆分工作流。

If 节点与 Switch 节点对比

如果您需要基于布尔值(true 和 false)之外的条件过滤数据,请使用 Switch 节点。Switch 节点与 If 节点类似,但支持多个输出连接器。

在 Airtable 节点前添加 If 节点#

首先,让我们在 HTTP Request 节点与 Airtable 节点之间的连接处添加一个 If 节点:

  1. 将鼠标悬停在 HTTP Request 节点与 Airtable 节点之间的箭头连接线上。
  2. 点击 HTTP Request 节点与 Airtable 节点之间的 + 号。

配置 If 节点#

选择加号会移除 Airtable 节点到 HTTP 请求节点的连接。现在,让我们添加一个连接到 HTTP 请求节点的 If 节点:

  1. 搜索 If 节点
  2. 当它出现在搜索结果中时选择它

对于 If 节点,我们将使用表达式。

表达式

表达式是编程语言中的一串字符和符号,可以根据输入进行计算以获取值。在 n8n 工作流中,您可以在节点中使用表达式来引用另一个节点的输入数据。在我们的示例中,If 节点引用了 HTTP 请求节点输出的数据。

在 If 节点窗口中配置参数:

  • 按照以下步骤将 value1 占位符设置为 {{ $json.orderStatus }}

    1. 将鼠标悬停在 value1 字段上
    2. 选择 value1 字段右侧的 Expression 标签页
    3. 接着点击链接图标打开表达式编辑器:
      打开表达式编辑器
      打开表达式编辑器
    4. 使用左侧面板选择 HTTP Request > orderStatus 并将其拖拽到窗口中央的 Expression 字段中
      IF节点中的表达式编辑器
      If 节点中的表达式编辑器
    5. 添加表达式后,关闭 Edit Expression 对话框
  • Operation:选择 String > is equal to

  • value2 占位符设置为 processing

数据类型

选择 Operation 时,请确保选择正确的数据类型(布尔值、日期时间、数字或字符串)。

选择 Execute step 来测试 If 节点。

您的结果应该如下所示:

If节点输出
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 中的数据,确保您的工作流只添加了正确的订单(即 orderStatusprocessing 的订单)。现在应该有 14 条记录而不是 30 条。

当前阶段,您的工作流应该如下图所示:

下一步是什么?#

Nathan 🙋:这个 If 节点对数据过滤太有用了!现在我有了所有处理中订单的信息。实际上我只需要 employeeNameorderID,但我想可以保留其他字段以防万一。

您 👩‍🔧:实际上我不建议这样做。插入更多数据需要更多计算资源,数据传输速度会变慢耗时更长,还会占用表格中更多的存储资源。在这个特定案例中,14 条记录 5 个字段可能看起来影响不大,但如果您的业务增长到数千条记录和数十个字段,这些都会累加,即使多一个列也会影响性能。

Nathan 🙋:哦,这很有用。你能从处理中的订单中只选择这两个字段吗?

您 👩‍🔧:当然,我将在下一步中完成这个操作。