일. 8월 17th, 2025

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;
  1. $input.all() – 이전 노드에서 전달된 모든 데이터 수집
  2. item.json – 개별 항목의 JSON 데이터 접근
  3. 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 사용 시 주의사항

  1. 에러 처리 필수 – try/catch로 모든 비동기 작업 감싸기
    try {
     const res = await axios.get('API_URL');
    } catch (error) {
     console.error('API 호출 실패:', error);
     return [];
    }
  2. 메모리 관리 – 대량 데이터 처리 시 chunking 적용
  3. 모듈 재사용 – 자주 사용하는 함수는 Custom Nodes로 생성
  4. 디버깅console.log() 대신 $node.output() 사용

🚀 성능 최적화 기법

  1. 배치 처리: 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;
    }

📚 학습 자료

  1. 공식 문서: n8n Code Node 가이드
  2. 템플릿 저장소: n8n Workflow Library
  3. JavaScript 참고: MDN JavaScript 문서

Code Node를 마스터하면 n8n의 가능성이 무한대로 확장됩니다! 🎉 첫 시작은 간단한 데이터 변형부터, 점점 복잡한 로직으로 도전해보세요. 여러분의 자동화 스킬이 한 단계 업그레이드될 거예요! 💪

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다