n8n에서 ‘여러 아이템’과 ‘한 아이템 안의 배열’은 다릅니다
n8n에서 자주 생기는 오류 중 하나는 여러 아이템과 하나의 JSON 배열을 같은 것으로 생각하는 것입니다. 이 글은 개념 설명보다 입력과 출력 예제로 차이를 확인합니다.
1. 여러 아이템
[
{"json":{"id":"A1","amount":12000}},
{"json":{"id":"A2","amount":8000}}
]
위 예시는 두 개의 아이템입니다. 다음 노드는 기본적으로 두 아이템을 각각 처리할 수 있습니다.
2. 한 아이템 안의 배열
[
{
"json":{
"orders":[
{"id":"A1","amount":12000},
{"id":"A2","amount":8000}
]
}
}
]
여기서는 아이템은 하나이고 orders 속성 안에 두 객체가 들어 있습니다. 다음 노드가 주문별로 따로 실행되어야 한다면 배열을 아이템으로 펼치는 단계가 필요할 수 있습니다.
3. 고유 실습: 금액 합계 확인
Code 노드나 적절한 변환 노드를 사용해 두 주문의 합계가 20,000인지 확인합니다. 예를 들어 여러 아이템 형태라면 다음처럼 처리할 수 있습니다.
const total = items.reduce((sum, item) => {
const amount = Number(item.json.amount);
if (!Number.isFinite(amount)) {
throw new Error('amount가 숫자가 아닙니다');
}
return sum + amount;
}, 0);
return [{json:{total}}];
실제 데이터에서는 "12,000원" 같은 문자열이 들어올 수 있으므로 무조건 Number()에 맡기지 말고 입력 형식을 먼저 정리합니다.
4. 디버깅 순서
- 노드 출력의 아이템 개수를 확인합니다.
json안의 실제 키 이름을 확인합니다.- 배열인지 객체인지 확인합니다.
- 표현식이 첫 아이템만 보는지 전체 아이템을 보는지 확인합니다.
- 한 건짜리 테스트 데이터로 먼저 재현합니다.
표현식 참조가 헷갈리면 $json·item·first·all 차이, 반복과 병합은 반복·Merge 실습을 참고하세요.