n8n 한국어 교재 · Ch.13 · 중급편 시작

Code 노드 — JavaScript 직접

Set·IF·Switch 로 안 풀리는 복잡한 변환은 결국 코드. n8n 의 Code 노드는 JavaScript(또는 Python)를 박스 안에 그대로 쓸 수 있게 합니다.

JavaScript 코드 박스 — for of $input.all 패턴

입문·기초편의 노드들 — Manual·Schedule·Webhook·HTTP·Set·IF·Switch·메일·시트·Slack — 만으로도 워크플로 70% 는 짤 수 있습니다. 나머지 30% 는 "이 데이터를 좀 복잡하게 가공해야 하는데..." 의 영역. 그게 Code 노드.

언제 Code 노드를 써야 하나

Code 노드를 쓰는 신호 3가지
① Set 노드의 표현식이 한 줄을 넘기 시작함
② IF 노드가 5개 이상 중첩됨
③ 같은 변환을 여러 워크플로에서 반복 — 함수화 욕구

반대로 — 안 써도 되면 안 쓰는 게 정답. Code 노드는 강력하지만 시각적 워크플로의 장점(누가 봐도 흐름 이해) 을 깎아먹어요. "Set 노드 5개로 풀리면 Set 5개" 가 더 좋습니다.

Code 노드 — 실제 화면

Code 노드 검색 결과 — Code 항목이 첫 결과로
이전 노드 + → "code" 검색 → Code 노드. 언어 선택(JavaScript / Python) 후 큰 에디터가 열립니다.

Code 노드의 두 모드:

Mode: Run Once for All Items (items 전체 한 번 — 집계·정렬 등) Run Once for Each Item (item 마다 한 번 — 변환·매핑 등)

패턴 1 — 전체 item 변환 (Run Once for All)

// items 100개 받아 각자 변환 const out = []; for (const item of $input.all()) { const u = item.json; out.push({ json: { name: u.firstName + ' ' + u.lastName, total: u.qty * u.price, isVIP: u.amount > 100000, } }); } return out;

$input.all() 이 이전 노드의 items 배열. 각자 변환해 새 배열 반환. 반환 형식은 무조건 [{json: {...}}, ...] — 이게 n8n 의 표준 item 형태(Ch.4).

패턴 2 — item 별 처리 (Run Once for Each)

// 이 모드에선 $json 이 자동 현재 item return { json: { summary: `${$json.name}님: ${$json.total.toLocaleString()}원`, tag: $json.total > 50000 ? '큰주문' : '소주문', } };

이 모드는 n8n 이 알아서 item 마다 코드를 실행. 코드는 한 item 만 처리하면 되고, 반환도 한 객체. Set 노드와 거의 같은 일인데 더 자유로움.

패턴 3 — 외부 데이터 활용 + 집계

// 매출 100건의 카테고리별 합계 const by = {}; for (const it of $input.all()) { const c = it.json.category; by[c] = (by[c] || 0) + it.json.amount; } return Object.entries(by).map(([cat, sum]) => ({ json: { category: cat, total: sum } }));

입력 100건 → 출력 카테고리 수만큼. n8n 의 일반 노드론 SQL GROUP BY 가 어렵지만 Code 노드론 5줄.

n8n 특수 함수 + 외부 라이브러리

# n8n 특수 함수 (Code 노드에서만) $input.all() // 입력 items 전체 $input.first() // 첫 item $input.itemMatching(0) // 인덱스 매칭 $workflow.id // 워크플로 ID $execution.id // 이번 실행 ID # 내장 라이브러리 DateTime // Luxon (Ch.5 와 동일) crypto // Node.js crypto Buffer // 바이너리 처리

외부 npm 패키지는 설치 안 됨 (보안). 필요하면 HTTP Request 노드로 외부 API 호출해 결과 받아오는 패턴 권장.

Python 모드 — n8n 의 Python Code 노드는 Pyodide 기반(브라우저 안 Python). 실행 속도 JS 대비 매우 느림, 외부 라이브러리 거의 없음. JavaScript 익숙치 않아도 한 번 JS 로 가는 게 효율적.

다음 Ch.14 — Loop · Split In Batches. 1만 건 데이터를 100개씩 끊어 처리하는 패턴. Code 노드의 단점(메모리)을 보완하는 정공법.

n8n 한국어 교재 · Ch.13 완료 — 중급편 시작

다음 편 → Ch.14 Loop · Split In Batches

전체 시리즈 보기

© 2026 주나이테크(주) @JUNAITECH