콘텐츠로 이동
📣 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.

5. 예약 주문 계산하기#

워크플로의 이 단계에서는 n8n 데이터가 어떻게 구성되어 있는지, 그리고 코드 노드를 사용하여 계산을 수행하기 위해 사용자 정의 JavaScript 코드를 추가하는 방법을 배우게 됩니다.

Nathan의 워크플로에서 다음 단계는 예약 주문에서 두 가지 값을 계산하는 것입니다:

  • 예약 주문의 총 수
  • 모든 예약 주문의 총 가치

데이터를 계산하고 워크플로에 더 많은 기능을 추가하기 위해, 모든 항목의 데이터를 집계할 수 있는 Run Once for All Items 모드를 제공하는 코드 노드를 사용할 수 있습니다.

코드 노드에 대하여#

코드 노드 모드

코드 노드는 데이터를 처리하는 방식을 변경하는 두 가지 운영 모드를 가지고 있습니다. Run Once for All Items 모드는 입력 목록에서 모든 항목의 데이터를 집계할 수 있도록 합니다. Run Once for Each Item 모드는 입력으로 받는 모든 항목에 대해 한 번 실행해야 하는 사용자 정의 JavaScript 코드 스니펫을 추가하는 데 사용됩니다. 코드 노드 사용법에 대해 더 알아보세요.

  • 자신의 노드 생성하기.
  • 사용자 정의 표현식 작성하기.
  • 코드 노드 사용하기.
  • n8n을 최대한 활용하기.

n8n에서 노드 간에 전달되는 데이터는 다음 구조를 가진 객체 배열입니다:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[
    {
   	 // 각 항목은 "json" 속성을 포함해야 합니다. 그러나 이는 빈 객체와 같은 {}일 수 있습니다.
   	 // 모든 종류의 JSON 데이터가 허용됩니다. 배열과 깊게 중첩된 데이터도 괜찮습니다.
   	 json: { // n8n이 작업하는 실제 데이터 (필수)
   		 // 이 데이터는 예제일 뿐이며, 어떤 형태의 JSON 데이터가 될 수 있습니다
   		 apple: 'beets',
   		 carrot: {
   			 dill: 1
   		 }
   	 },
   	 // 항목의 이진 데이터. n8n의 대부분 항목은 이진 데이터를 포함하지 않습니다 (선택 사항)
   	 binary: {
   		 // 키 이름 "apple"은 예시일 뿐입니다. 어떤 종류의 키 이름도 가능합니다.
   		 apple-picture: {
   			 data: '....', // Base64로 인코딩된 이진 데이터 (필수)
   			 mimeType: 'image/png', // 선택 사항이지만 가능한 경우 설정해야 합니다 (선택 사항)
   			 fileExtension: 'png', // 선택 사항이지만 가능한 경우 설정해야 합니다 (선택 사항)
   			 fileName: 'example.png', // 선택 사항이지만 가능한 경우 설정해야 합니다 (선택 사항)
   		 }
   	 }
    },
    ...
]

코드 노드 구성하기#

이제 이를 구현하는 방법을 살펴보겠습니다.

워크플로에서 If 노드의 false 브랜치에 연결된 코드 노드를 추가합니다.

코드 노드 창이 열리면 다음 매개변수를 구성합니다:

  • 모드: Run Once for All Items 선택
  • 언어: JavaScript 선택
  • 아래의 코드를 복사하여 코드 상자에 붙여넣습니다:
    1
    2
    3
    4
    5
    6
    7
    8
    let items = $input.all();
    let totalBooked = items.length;
    let bookedSum = 0;
    
    for(let i=0; i < items.length; i++) {
      bookedSum = bookedSum + items[i].json.orderPrice;
    }
    return [{json:{totalBooked, bookedSum}}];
    

계산 결과를 반환하는 형식에 유의하세요:
return [{json:{totalBooked, bookedSum}}]

데이터 구조 오류

올바른 데이터 구조를 사용하지 않으면 다음과 같은 오류 메시지가 표시됩니다: Error: Always an Array of items has to be returned!

이제 테스트 단계를 선택하면 다음과 같은 결과를 볼 수 있습니다:

코드 노드 출력
코드 노드 출력

코드 노드에서 Python 사용하기

코드 노드에서 Python을 사용할 수도 있습니다. 이에 대해 더 배우려면 코드 노드 문서를 참조하세요.

다음은 무엇인가요?#

Nathan 🙋: 와, 코드 노드는 정말 강력하네요! 기본적인 JavaScript 기술만 있으면 워크플로를 강화할 수 있다는 뜻이에요.

You 👩‍🔧: 맞아요! 코드 없이 작업하는 것에서 저 코드 작업으로 발전할 수 있어요!

Nathan 🙋: 이제, 예약된 주문의 계산을 내 팀의 Discord 채널로 어떻게 보낼 수 있을까요?

You 👩‍🔧: 그에 대한 n8n 노드가 있어요. 다음 단계에서 설정할게요.

인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!