Share

n8n 표현식의 핵심 구조

작성자 mummer · 2025-08-26

## n8n 표현식의 핵심 구조

n8n 표현식은 기본적으로 {{ }} 두 개의 중괄호 안에 자바스크립트 코드를 작성하는 방식입니다. 이 안에서 n8n이 제공하는 특별한 변수들을 통해 워크플로우의 데이터에 접근하고 조작할 수 있습니다.

## 주요 n8n 전용 변수 및 객체 ⚙️

일반 자바스크립트 코드와 더불어 n8n에서 가장 중요하게 사용되는 특별한 변수들입니다. 이 변수들을 이해하는 것이 n8n 표현식의 핵심입니다.

변수/객체설명예시 (JSON 데이터: {"name": "test", "value": 123} )
$json현재 아이템(Item)의 JSON 데이터 전체를 가리키는 가장 기본적인 객체입니다.{{$json.name}} → “test” 반환
$item(index)여러 아이템을 처리할 때 특정 인덱스의 아이템에 접근하는 헬퍼 함수입니다. Split in Batches 노드 등에서 유용합니다.{{$item(0).json.name}} → 첫 번째 아이템의 name 값 반환
$('노드 이름')특정 노드의 결과 데이터에 접근할 때 사용합니다. n8n 워크플로우의 강력함이 여기서 나옵니다.{{$('Read Binary File').item.json.data}} → ‘Read Binary File’ 노드의 결과 데이터에 접근
$envn8n에 설정된 **환경 변수(Environment Variable)**에 접근할 때 사용합니다. API 키 등 민감한 정보를 저장하고 불러올 때 필수적입니다.{{$env.MY_API_KEY}}
$workflow현재 실행 중인 워크플로우의 메타데이터(id, name 등)에 접근합니다.{{$workflow.name}} → 현재 워크플로우의 이름 반환
$execution현재 실행(Execution)에 대한 정보(id, timezone, mode 등)에 접근합니다.{{$execution.id}} → 현재 실행의 고유 ID 반환

## 실용적인 예시

간단한 예시부터 조금 더 복잡한 예시까지 살펴보겠습니다.

1. 단순 데이터 접근

  • 들어온 데이터의 subject 라는 필드 값을 그대로 사용하고 싶을 때:JavaScript{{$json.subject}}

2. 데이터 조합 (문자열 합치기)

  • firstNamelastName 필드를 합쳐서 fullName을 만들고 싶을 때:JavaScript{{$json.firstName + " " + $json.lastName}}

3. 자바스크립트 내장 함수 사용

  • status 필드의 값을 모두 대문자로 바꾸고 싶을 때:JavaScript{{$json.status.toUpperCase()}}
  • message 필드에서 첫 10글자만 잘라내고 싶을 때:JavaScript{{$json.message.substring(0, 10)}}

4. 조건문 (삼항 연산자)

  • temperature 값이 30보다 크면 “High”, 아니면 “Normal”을 반환하고 싶을 때:JavaScript{{$json.temperature > 30 ? "High" : "Normal"}}

5. 다른 노드의 데이터 참조

  • ‘Get Customer’라는 이름의 이전 노드에서 가져온 고객의 이메일 주소를 사용하고 싶을 때:JavaScript{{$('Get Customer').item.json.email}}

## 엔지니어를 위한 비유 🏭

현재 열병합발전소에서 근무하고 계시니, 이를 발전소 시스템에 비유해 보겠습니다.

  • 워크플로우(Workflow): 전체 발전소의 **P&ID(공정 배관 계장도)**와 같습니다. 데이터가 어떻게 흘러가는지 전체적인 흐름을 보여줍니다.
  • 노드(Node): 가스터빈, 배열회수보일러(HRSG), 스팀터빈, 펌프 등 개별 설비에 해당합니다. 각 설비는 입력을 받아 특정 작업을 수행하고 결과를 출력합니다.
  • 데이터 아이템(Item): 배관을 통해 흐르는 물, 증기, 또는 연료와 같습니다. 이 유체는 온도, 압력, 유량 등의 데이터를 가지고 있습니다.
  • 표현식(Expression): **계측기(Sensor)나 제어 로직(Control Logic)**에 해당합니다. 표현식은 특정 지점(노드)에서 유체(데이터)의 상태(값)를 읽고($json), 그 값에 따라 밸브를 조작하거나(데이터 변경), 다른 설비(다음 노드)로 신호를 보내는 역할을 합니다. {{$('Gas Turbine').item.json.exhaust_temp}}는 “가스터빈 출구의 배기가스 온도를 측정하라”는 DCS 로직과 같은 의미입니다.

## 결론

요약하자면, n8n 표현식은 “n8n의 데이터 구조에 쉽게 접근할 수 있도록 특화된 변수($json, $item 등)를 제공하는 자바스크립트 실행 환경”이라고 정의할 수 있습니다.

따라서 일반적인 자바스크립트의 데이터 타입, 연산자, 내장 함수(String, Number, Math 등)를 대부분 그대로 활용할 수 있으며, 여기에 n8n의 강력한 데이터 연결 기능을 더해 복잡한 자동화 로직을 손쉽게 구현할 수 있습니다.

You may also like