N8N中文教程
使用 n8n/Getting_started/Text_courses/Level_one/Building_the_workflow

3. 筛选订单#

在工作流的这一步中,你将学习如何使用条件逻辑来过滤数据,以及如何在节点中使用表达式(expressions)。我们将使用 If 节点 来实现这一功能。 完成此步骤后,你的工作流应如下所示: 查看工作流文件

为了仅将状态为“处理中”的订单插入到 Airtable 中,我们需要根据 orderStatus 字段对数据进行过滤。基本逻辑是:如果 orderStatus 的值为 processing(处理中),那么 将所有具有该状态的记录插入 Airtable;否则(例如,当 orderStatus 不是 processing 时),计算所有其他状态(如 booked)订单的总和。

这种 if-then-else(如果-那么-否则)命令称为条件逻辑(conditional logic)。在 n8n 工作流中,你可以通过 If 节点 添加条件逻辑,该节点会根据比较操作将工作流进行条件分支。

If 节点 vs. Switch 节点

如果你需要基于多个非布尔值(不仅仅是 true 和 false)进行数据过滤,请使用 Switch 节点。Switch 节点与 If 节点类似,但支持多个输出连接器。

在 Airtable 节点前添加 If 节点#

首先,我们在 HTTP Request 节点和 Airtable 节点之间的连接中插入一个 If 节点:

  1. 将鼠标悬停在连接 HTTP Request 节点和 Airtable 节点的箭头上。
  2. 点击两个节点之间出现的 + 符号。

配置 If 节点#

点击加号后,原本从 HTTP Request 节点到 Airtable 节点的连接会被断开。现在,我们来添加一个连接到 HTTP Request 节点的 If 节点:

  1. 搜索 If 节点。
  2. 在搜索结果中选择该节点。

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

表达式(Expressions)

表达式 是编程语言中由字符和符号组成的字符串,可以通过求值获得一个结果,其值通常取决于输入。在 n8n 工作流中,你可以在节点中使用表达式来引用其他节点的输入数据。在本例中,If 节点将引用 HTTP Request 节点输出的数据。

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

  • value1 占位符设置为 {{ $json.orderStatus }},操作步骤如下:
    1. 将鼠标悬停在 value1 字段上。
    2. value1 字段右侧选择 Expression(表达式)选项卡。
    3. 接着,点击链接图标以打开表达式编辑器: Opening the Expression Editor打开表达式编辑器
    4. 使用左侧面板选择 HTTP Request > orderStatus,然后将其拖动到窗口中央的 Expression(表达式)字段中。 Expression Editor in the IF nodeIf 节点中的表达式编辑器
    5. 添加表达式后,关闭 Edit Expression(编辑表达式)对话框。
  • Operation(操作):选择 String(字符串)> is equal to(等于)
  • value2 占位符设置为 processing

数据类型 选择 操作(Operation) 时,请确保选择了正确的数据类型(boolean 布尔值、date & time 日期与时间、number 数字、或 string 字符串)。 选择 执行步骤(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 节点窗口,点击 执行步骤(Execute step)

检查你在 Airtable 中的数据,确认工作流仅添加了正确的订单(即 orderStatusprocessing 的订单)。现在应该有 14 条记录,而不是之前的 30 条。

此时,你的工作流应如下图所示: 查看工作流文件

下一步是什么?#

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

你 👩‍🔧:其实我不建议这样做。插入更多数据会消耗更多的计算资源,数据传输更慢、耗时更长,同时也会占用表格中更多的存储空间。虽然在这个例子中,14 条记录包含 5 个字段似乎影响不大,但如果业务增长到成千上万条记录和几十个字段,这些开销就会累积起来,甚至多出一列都可能影响性能。

Nathan 🙋:哦,这倒是挺重要的信息。那你能只从处理中的订单里提取这两个字段吗?

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