D: n8n은 강력한 워크플로우 자동화 도구이지만, 때로는 기본 노드만으로는 원하는 작업을 구현하기 어려울 때가 있습니다. 😅 이럴 때 Code Node를 사용하면 JavaScript/Python으로 직접 로직을 작성해 복잡한 데이터 처리부터 고급 연산까지 자유롭게 구현할 수 있습니다. 이번 가이드에서는 Code Node의 핵심 기능과 실전 예제를 상세히 살펴보겠습니다!
🔍 Code Node 기본 구조 이해하기
// 입력 데이터 접근
const inputData = $input.all();
// 데이터 처리 로직
const result = inputData.map(item => {
return {
transformed: item.json.original * 2
};
});
// 결과 반환
return result;
- $input.all() – 이전 노드에서 전달된 모든 데이터 수집
- item.json – 개별 항목의 JSON 데이터 접근
- return – 처리 결과를 다음 노드로 전달
🛠️ 5가지 실전 활용 시나리오
1. 데이터 변형 마스터하기
예시: 온도 단위 변환 (℃ → ℉)
const celsiusTemps = $input.all();
const fahrenheit = celsiusTemps.map(temp => {
return {
fahrenheit: (temp.json.celsius * 9/5) + 32,
original: temp.json.celsius
};
});
return fahrenheit;
➡️ 입력: [{ "celsius": 25 }]
→ 출력: [{ "fahrenheit": 77, "original": 25 }]
2. 외부 API 연동
예시: 환율 계산기
const axios = require('axios');
async function getExchangeRate() {
const response = await axios.get('https://api.exchangerate-api.com/v4/latest/USD');
return response.data.rates.KRW;
}
const amount = $input.first().json.usd;
const rate = await getExchangeRate();
return [{
krw: Math.floor(amount * rate),
usd: amount
}];
3. 복잡한 조건부 처리
예시: 주문 자동 분류 시스템
const orders = $input.all();
const result = orders.map(order => {
const amount = order.json.total;
let priority = 'standard';
if (amount > 100000) priority = 'vip';
else if (amount > 50000) priority = 'urgent';
return {
...order.json,
priority,
discount: priority === 'vip' ? 0.1 : 0
};
});
return result;
4. 데이터 검증 및 필터링
예시: 이메일 유효성 검사
const contacts = $input.all();
const validEmails = contacts.filter(contact => {
const email = contact.json.email;
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
});
const invalidEmails = contacts.filter(contact => !validEmails.includes(contact));
return {
valid: validEmails,
invalid: invalidEmails
};
5. 날짜/시간 조작
예시: 배송 예정일 계산
const orders = $input.all();
const processedOrders = orders.map(order => {
const orderDate = new Date(order.json.order_date);
const shippingDays = order.json.express ? 2 : 5;
orderDate.setDate(orderDate.getDate() + shippingDays);
// 주말 제외
while ([0, 6].includes(orderDate.getDay())) {
orderDate.setDate(orderDate.getDate() + 1);
}
return {
...order.json,
estimated_delivery: orderDate.toISOString().split('T')[0]
};
});
return processedOrders;
💡 전문가 팁: Code Node 사용 시 주의사항
- 에러 처리 필수 – try/catch로 모든 비동기 작업 감싸기
try { const res = await axios.get('API_URL'); } catch (error) { console.error('API 호출 실패:', error); return []; }
- 메모리 관리 – 대량 데이터 처리 시 chunking 적용
- 모듈 재사용 – 자주 사용하는 함수는 Custom Nodes로 생성
- 디버깅 –
console.log()
대신$node.output()
사용
🚀 성능 최적화 기법
- 배치 처리: 1000개 이상 데이터 처리 시
const batchSize = 100; for (let i = 0; i { const rScore = customer.lastPurchase < 30 ? 5 : 1; const fScore = Math.min(customer.orders, 5); const mScore = Math.floor(customer.ltv / 1000); return rScore + fScore + mScore; }
📚 학습 자료
- 공식 문서: n8n Code Node 가이드
- 템플릿 저장소: n8n Workflow Library
- JavaScript 참고: MDN JavaScript 문서
Code Node를 마스터하면 n8n의 가능성이 무한대로 확장됩니다! 🎉 첫 시작은 간단한 데이터 변형부터, 점점 복잡한 로직으로 도전해보세요. 여러분의 자동화 스킬이 한 단계 업그레이드될 거예요! 💪