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

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

下午好🌅🌅🌅
本答案参考通义千问
在 n8n 中,处理集合类型数据(如数组)的映射是实现自动化流程中非常常见且关键的一环。特别是在你提到的场景中,Webhook 接收订单新增事件,然后将订单同步到其他系统,而每个订单包含多个商品(即一个订单对应多个商品),这就需要对这些商品进行数组映射。
假设你通过 Webhook 接收到的数据结构如下:
{
"order": {
"id": "123",
"customer": "John Doe",
"items": [
{ "product_id": "p1", "quantity": 2 },
{ "product_id": "p2", "quantity": 1 }
]
}
}
你想将 items 数组中的每一个商品作为独立的节点输出,以便后续同步到其他系统。
这是最常用的方法之一,用于将数组拆分为多个独立的项目,方便后续处理。
{{ $json.items }}1(表示每次只处理一个商品)重点:
“Split In Batches” 是将数组中的每个元素单独输出的关键节点,它会为每个元素生成一个独立的执行上下文。
如果你需要在拆分之后对每个商品做额外的字段映射或修改,可以使用 “Set” 节点。
{
"item": {
"product_id": "{{ $json.product_id }}",
"quantity": "{{ $json.quantity }}"
}
}
重点:
“Set” 节点可以用来构建新的对象结构,特别适合在拆分后对数据格式进行统一或增强。
如果你希望对每个商品执行多个操作(例如调用多个 API、发送邮件等),可以使用 “Loop” 节点。
重点:
“Loop” 节点适合需要对每个商品执行多步骤操作的场景。
以下是一个完整的 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 的问题,欢迎继续提问!