跳到主要内容

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 Request节点的连接。现在添加一个连接到HTTP Request节点的If节点:

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

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

表达式说明

表达式是编程语言中的字符和符号串,通常可根据输入数据经计算得出值。在n8n工作流中,您可以在节点中使用表达式来引用其他节点的输入数据。本示例中,If节点将引用HTTP Request节点的数据输出。

在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节点输出

请注意,orderStatusprocessing的订单应显示在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 🙋:哦,这个信息很有用。那能否只选择处理中订单的两个字段?

您 👩‍🔧:当然可以,我将在下一步中实现。