m0_57974773 2025-07-30 14:44 采纳率: 0%
浏览 31

有偿回答,n8n中集合类型数据映射

在n8n中怎么将数组映射到节点的数组上,例如webhook接受订单新增事件,然后同步订单到其他系统,一个订单有多个商品,在节点上怎么映射商品数据

img

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-07-30 14:45
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    n8n 中,处理集合类型数据(如数组)的映射是实现自动化流程中非常常见且关键的一环。特别是在你提到的场景中,Webhook 接收订单新增事件,然后将订单同步到其他系统,而每个订单包含多个商品(即一个订单对应多个商品),这就需要对这些商品进行数组映射


    ✅ 问题分析

    假设你通过 Webhook 接收到的数据结构如下:

    {
      "order": {
        "id": "123",
        "customer": "John Doe",
        "items": [
          { "product_id": "p1", "quantity": 2 },
          { "product_id": "p2", "quantity": 1 }
        ]
      }
    }
    

    你想将 items 数组中的每一个商品作为独立的节点输出,以便后续同步到其他系统。


    🧠 解决方案

    1. 使用 “Split In Batches” 节点

    这是最常用的方法之一,用于将数组拆分为多个独立的项目,方便后续处理。

    步骤如下:

    1. 在你的工作流中添加 “Split In Batches” 节点。
    2. 将其连接到接收 Webhook 数据的节点(如 “HTTP Request” 或 “Webhook” 节点)。
    3. “Split In Batches” 节点设置中:
      • 设置 “Split on”{{ $json.items }}
      • 设置 “Batch size”1(表示每次只处理一个商品)
    4. 连接下一个节点(如 “API Request” 节点)来处理单个商品。

    重点:
    “Split In Batches” 是将数组中的每个元素单独输出的关键节点,它会为每个元素生成一个独立的执行上下文。


    2. 使用 “Set” 节点进行数据映射(可选)

    如果你需要在拆分之后对每个商品做额外的字段映射或修改,可以使用 “Set” 节点。

    示例配置(在 “Set” 节点中):

    {
      "item": {
        "product_id": "{{ $json.product_id }}",
        "quantity": "{{ $json.quantity }}"
      }
    }
    

    重点:
    “Set” 节点可以用来构建新的对象结构,特别适合在拆分后对数据格式进行统一或增强。


    3. 使用 “Loop” 节点(适用于更复杂的逻辑)

    如果你希望对每个商品执行多个操作(例如调用多个 API、发送邮件等),可以使用 “Loop” 节点。

    配置方式:

    • 将 “Split In Batches” 的输出连接到 “Loop” 节点。
    • 在 Loop 内部设置多个子节点(如 API 请求、数据库写入等)。
    • 每次循环都会处理一个商品。

    重点:
    “Loop” 节点适合需要对每个商品执行多步骤操作的场景。


    🧩 示例代码(JSON 格式)

    以下是一个完整的 JSON 示例,展示如何将订单商品映射到节点上:

    {
      "nodes": [
        {
          "type": "httpRequest",
          "name": "Webhook",
          "parameters": {
            "url": "https://your-webhook-endpoint.com",
            "method": "POST"
          }
        },
        {
          "type": "splitInBatches",
          "name": "Split Items",
          "parameters": {
            "splitOn": "{{$json.order.items}}",
            "batchSize": 1
          }
        },
        {
          "type": "set",
          "name": "Map Item",
          "parameters": {
            "values": {
              "product_id": "{{$json.product_id}}",
              "quantity": "{{$json.quantity}}"
            }
          }
        },
        {
          "type": "apiRequest",
          "name": "Sync to System",
          "parameters": {
            "url": "https://api.system.com/items",
            "method": "POST",
            "body": {
              "product_id": "{{$json.product_id}}",
              "quantity": "{{$json.quantity}}"
            }
          }
        }
      ],
      "connections": {
        "Webhook": {
          "main": [
            {
              "node": "Split Items"
            }
          ]
        },
        "Split Items": {
          "main": [
            {
              "node": "Map Item"
            }
          ]
        },
        "Map Item": {
          "main": [
            {
              "node": "Sync to System"
            }
          ]
        }
      }
    }
    

    ✅ 总结

    | 步骤 | 功能 | 说明 | |------|------|------| | 1 | Split In Batches | 将数组拆分成多个独立项 | | 2 | Set | 对每个商品进行字段映射 | | 3 | Loop | 多步操作时使用,支持复杂逻辑 |

    重点:
    “Split In Batches” 是处理集合类型数据的核心节点,确保每个商品都能被独立处理。


    如有更多关于 n8n 的问题,欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 修改了问题 7月30日
  • 创建了问题 7月30日