Skip to content

3. 筛选订单

在工作流程的这一步中,您将学习如何使用条件逻辑过滤数据以及如何使用If 节点在节点中使用表达式。

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

没有任何

为了仅将处理中的订单插入 Airtable,我们需要通过 来过滤数据基本上,我们要告诉程序,如果正在处理,则将所有具有此状态的记录插入 Airtable;否则,例如,如果未处理,则使用其他方式( )计算所有订单的总和。

这个 if-then-else 命令是条件逻辑。在 n8n 工作流中,您可以使用If 节点添加条件逻辑,该节点根据比较操作有条件地拆分工作流。

如果与切换

如果需要根据多个布尔值(true 和 false)筛选数据,请使用Switch 节点。Switch 节点与 If 节点类似,但支持多个输出连接器。

在 Airtable 节点前添加 If 节点

首先,让我们在 HTTP 请求节点和 Airtable 节点的连接之间添加一个 If 节点:

  1. 将鼠标悬停在HTTP 请求节点和Airtable节点的箭头连接上。
  2. 选择HTTP 请求节点和 Airtable 节点之间的+号。

配置 If 节点

选择加号将删除 Airtable 节点与 HTTP 请求之间的连接。现在,让我们添加一个连接到 HTTP 请求节点的 If 节点:

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

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

表达式

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

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

  • 将鼠标
    1. 悬停在 value1 字段上。
    1. 选择
    1. 字段右侧的
    1. “表达式”
    选项卡
    1. 接下来,通过选择链接图标打开表达式编辑器:
    1. 打开表达式编辑器
    1. 使用左侧面板选择
    1. “HTTP 请求”
    1. >
    1. “orderStatus”
    1. ,并将其拖到
    1. 窗口中央的
    1. “表达式”
    字段中。If
    1. 节点中的表达式编辑器
    1. 添加表达式后,关闭
    1. “编辑表达式”
    1. 对话框。
  • 操作:选择字符串>等于

  • 将占位符设置为。

数据类型

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

选择执行步骤来测试 If 节点。

您的结果应该如下所示:

如果节点输出
如果节点输出

请注意,具有订单状态的订单应显示在True Branch输出中,而具有订单状态的订单应显示在False Branch输出中。

完成后关闭 If 节点详细视图。

将数据插入 Airtable

接下来,我们要将这些数据插入 Airtable。还记得 Nathan 在“将数据插入 Airtable”课程结尾说的话吗?

我实际上只需要在表中插入处理订单......

由于 Nathan 只需要表中的订单,我们将 Airtable 节点连接到 If 节点的连接器。

在这种情况下,由于 Airtable 节点已经在我们的画布上,请选择If 节点连接器并将其拖到 Airtable 节点。

此时最好重新测试 Airtable 节点。在此之前,请在 Airtable 中打开表并删除所有现有行。然后在 n8n 中打开 Airtable 节点窗口,并选择执行步骤

检查 Airtable 中的数据,确保工作流程仅添加了正确的订单(带有 的订单) 。现在应该有 14 条记录,而不是 30 条。

在此阶段,您的工作流程应如下所示:

没有任何

下一步是什么?

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

你👩‍🔧 :其实我不建议这么做。插入更多数据需要更多计算能力,数据传输速度更慢,耗时更长,还会占用表中更多的存储资源。在这个特定情况下,14 条记录(包含 5 个字段)可能看起来不会有太大影响,但如果您的业务增长到数千条记录和数十个字段,数据累积起来,即使多出一列也会影响性能。

Nathan 🙋 :哦,知道了。您能从处理订单中只选择两个字段吗?

你👩‍🔧 :当然,我下一步会这么做。