跳到主要内容

5. 计算已确认订单#

在本工作流步骤中,您将了解n8n如何构建数据,以及如何使用代码节点添加自定义JavaScript代码执行计算。完成此步骤后,您的工作流应如下图所示:

查看工作流文件

Nathan工作流的下一步是从已确认订单中计算两个数值:

  • 已确认订单的总数量
  • 所有已确认订单的总金额

要通过计算数据为工作流添加更多功能,您可以使用代码节点编写自定义JavaScript代码。

关于代码节点#

代码节点模式

代码节点具有两种操作模式,具体取决于您希望如何处理数据项:

  • 对所有项执行一次:允许编写代码以分组形式一次性处理所有输入项
  • 对每个项执行一次:针对每个输入项分别执行代码

了解更多关于代码节点的使用方法。

在n8n中,节点间传递的数据是具有以下JSON结构的对象数组:

[
{
"json": {
"apple": "beets",
"carrot": {
"dill": 1
}
},
"binary": {
"apple-picture": {
"data": "....",
"mimeType": "image/png",
"fileExtension": "png",
"fileName": "example.png",
}
}
},
...
]
  1. (必需)n8n 将实际数据存储在嵌套的 json 键中。此属性为必需项,但可设置为从空对象(如 {})到数组及深层嵌套数据的任意内容。若数据缺少 json 对象及父级数组([]),代码节点会自动为其添加封装。
  2. (可选)项目的二进制数据。n8n 中大多数项目不包含二进制数据。
  3. (必需)二进制数据的任意键名。
  4. (必需)Base64 编码的二进制数据。
  5. (可选)应尽可能设置。
  6. (可选)应尽可能设置。
  7. (可选)应尽可能设置。

您可在 n8n 数据结构 页面了解关于预期格式的更多信息。

配置代码节点#

现在让我们看看如何使用代码节点完成 Nathan 的任务。

在您的工作流中,添加一个连接到 If 节点 false 分支的 代码节点

打开代码节点窗口后,配置以下参数:

  • 模式:选择 为所有项运行一次

  • 语言:选择 JavaScript

    在代码节点中使用 Python

    下文示例使用 JavaScript,但您也可以在代码节点中使用 Python。了解更多信息,请参阅 代码节点 文档。

  • 复制下方代码,粘贴至 代码 框中以替换现有代码:

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} }];

请注意我们返回计算结果所采用的格式:

return [{ json: {totalBooked, bookedSum} }]

数据结构错误

若未使用正确的数据结构,将出现错误提示:Error: Always an Array of items has to be returned!

现在选择执行步骤,您将看到如下结果:

代码节点输出

代码节点输出

后续步骤#

Nathan 🙋:哇,代码节点功能真强大!这意味着只要掌握基础JavaScript技能,就能增强我的工作流。

您 👩‍🔧:没错!您可以从无代码开发进阶到低代码开发!

Nathan 🙋:那么如何将已预订订单的计算结果发送到团队的Discord频道?

您 👩‍🔧:n8n有对应功能节点。下一步我将进行配置。