5. 计算已预订订单#
在本工作流步骤中,您将学习 n8n 如何结构化数据,以及如何使用 Code 节点添加自定义 JavaScript 代码来执行计算。完成此步骤后,您的工作流应如下图所示:
Nathan 工作流的下一个步骤是从已预订订单中计算两个值:
- 已预订订单的总数量
- 所有已预订订单的总金额
要计算数据并为工作流添加更多功能,您可以使用 Code 节点,它允许您编写自定义 JavaScript 代码。
关于代码节点#
代码节点模式
代码节点有两种操作模式,取决于您希望如何处理项目:
- 对所有项目运行一次 允许您编写代码一次性处理所有输入项目,作为一个组。
- 对每个项目运行一次 为每个输入项目单独执行一次您的代码。
了解更多关于如何使用代码节点的信息。
在n8n中,节点之间传递的数据是具有以下JSON结构的对象数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
- (必填) n8n将实际数据存储在嵌套的
json
键中。此属性是必需的,但可以设置为从空对象(如{}
)到数组和深度嵌套数据的任何内容。如果缺少,代码节点会自动将数据包装在json
对象和父数组([]
)中。 - (可选) 项目的二进制数据。n8n中的大多数项目不包含二进制数据。
- (必填) 二进制数据的任意键名。
- (必填) Base64编码的二进制数据。
- (可选) 如果可能应该设置。
- (可选) 如果可能应该设置。
- (可选) 如果可能应该设置。
您可以在n8n数据结构页面上了解更多关于预期格式的信息。
配置 Code 节点#
现在让我们看看如何使用 Code 节点完成 Nathan 的任务。
在你的工作流中,添加一个 Code 节点 连接到 If 节点 的 false
分支。
打开 Code 节点窗口后,配置以下参数:
- 模式:选择 Run Once for All Items(对所有项目运行一次)。
-
语言:选择 JavaScript。
在代码节点中使用 Python
虽然下面我们使用 JavaScript,但你也可以在 Code 节点中使用 Python。了解更多信息,请参考 Code 节点 文档。
-
复制以下代码并粘贴到 代码 框中替换现有代码:
1 2 3 4 5 6 7 8 9
let items = $input.all(); let totalBooked = items.length; let bookedSum = 0; for (let i=0; i < items.length; i++) { bookedSum = bookedSum + items[i].json.orderPrice; } return [{ json: {totalBooked, bookedSum} }];
注意我们返回计算结果时使用的格式:
1 |
|
数据结构错误
如果不使用正确的数据结构,你会收到错误消息:Error: Always an Array of items has to be returned!
(错误:必须始终返回项目数组!)
现在选择 执行步骤,你应该会看到以下结果:

下一步是什么?#
Nathan 🙋:哇,Code 节点太强大了!这意味着如果我掌握一些基本的 JavaScript 技能,就能增强我的工作流功能。
你 👩🔧:没错!你可以从无代码进阶到低代码开发了!
Nathan 🙋:那么,我该如何将这些已预订订单的计算结果发送到团队的 Discord 频道呢?
你 👩🔧:n8n 有专门的节点可以实现这个功能。我将在下一步中进行设置。