n8n 한국어 교재 · Ch.5

Expression 문법 마스터 — 10 패턴

표현식 {{ }} 안에서 자주 쓰는 JavaScript 패턴 10가지. 문자열·Luxon 날짜·조건·배열까지 — 외울 게 아니라 한 번 봐두고 필요할 때 돌아오는 치트시트.

네 가지 n8n 표현식 코드 샘플 — split, toFormat, 삼항 연산자, map

Ch.4 에서 $json·$input·$node·$now·$workflow 다섯 변수를 봤다면, 이제 그 변수를 어떤 식으로 조작해서 원하는 결과를 만드는지가 표현식의 본격적 영역입니다. n8n 의 표현식은 평범한 JavaScript 라서 String.split·Array.map 같은 표준 메서드를 그대로 씁니다. 다만 날짜는 Luxon 이라는 라이브러리를 쓴다는 점만 조금 다릅니다.

표현식의 두 모드 — 정적 텍스트 vs `=` 표시

Edit Fields (Set) 노드 패널 — 좌측 INPUT, 가운데 Mode·Fields to Set·Include Other Input Fields, 우측 OUTPUT 영역
표현식이 가장 자주 쓰이는 Edit Fields(Set) 노드. Add Field 로 필드를 만들고 그 값에 ={{ }} 표현식을 넣습니다.

모든 입력 필드는 두 가지로 해석됩니다. 클릭 후 보이는 = 작은 표시가 결정.

정적 모드 (기본) — 입력한 텍스트 그대로 사용. Hello {{ name }} 라고 쳐도 그냥 문자열 Hello {{ name }}.

표현식 모드 (=) — 필드 좌측에 = 표시. {{ }} 안의 JavaScript 가 실행되고 결과가 들어감.

필드를 클릭한 채 Expression 탭을 누르면 표현식 모드로 전환. 또는 그냥 = 로 시작해도 자동 전환됩니다.

패턴 1~5 — 문자열 다루기

① 이메일에서 사용자명만

{{ $json.email.split('@')[0] }} # "박준성@junai.ai" → "박준성"

② 문자열 잘라 앞 N자만

{{ $json.title.slice(0, 40) }} # 긴 제목 → 앞 40자만 (블로그 미리보기용)

③ 여러 필드 하나로 합치기

{{ $json.firstName + " " + $json.lastName }} # "박" + " " + "준성" → "박 준성" # 또는 템플릿 리터럴 {{ `${$json.firstName} ${$json.lastName} 님` }} "박 준성 님"

④ 대소문자·공백 정리

{{ $json.name.trim().toLowerCase() }} # " HONG GILDONG " → "hong gildong"

⑤ 치환 — replace

{{ $json.phone.replace(/-/g, '') }} # "010-1234-5678" → "01012345678"

패턴 6~7 — Luxon 날짜·시간

n8n 은 날짜 처리에 Luxon 라이브러리를 씁니다. JavaScript 의 Date 보다 한국어 사용자에게 편한 부분이 많아요. $now 가 이미 Luxon DateTime 객체라 그대로 메서드 호출 가능.

⑥ 현재 날짜·시간 포맷

{{ $now.toFormat("yyyy-MM-dd") }} "2026-05-18" {{ $now.toFormat("HH:mm:ss") }} "05:47:12" {{ $now.toFormat("yyyy년 LL월 dd일 (ccc)") }} "2026년 05월 18일 (월)"

포맷 토큰은 Luxon 공식 표 참고. 자주 쓰는 건 yyyy(연 4자리), MM(월), dd(일), HH(24시), mm(분), ss(초).

⑦ 날짜 계산 — 7일 전·후

{{ $now.minus({ days: 7 }).toFormat("yyyy-MM-dd") }} "2026-05-11" (오늘이 5/18 일 때) {{ $now.plus({ hours: 3 }).toISO() }} "2026-05-18T08:47:12+09:00" # 두 날짜 사이 일수 {{ $now.diff($json.createdAt, 'days').days }} 14.5

패턴 8~10 — 조건·배열

⑧ 조건문 — 삼항 연산자

{{ $json.score >= 80 ? "합격" : "재시험" }} # 중첩 가능 {{ $json.score >= 90 ? "A" : $json.score >= 80 ? "B" : "C" }}

표현식 안엔 if {} 못 쓰지만 삼항 연산자로 거의 모든 분기 처리 가능. 더 복잡하면 IF 노드 또는 Code 노드.

⑨ 배열 변환 — map · filter

# 객체 배열에서 이름만 뽑기 {{ $json.users.map(u => u.name) }} ["박준성", "홍길동", "이몽룡"] # 조건 만족하는 것만 남기기 {{ $json.orders.filter(o => o.amount > 10000) }} [ { amount: 25000, ... }, ... ] # 합계 — reduce {{ $json.items.reduce((s, x) => s + x.price, 0) }} 87500

⑩ 안전한 접근 — Optional Chaining

# 중간 필드가 없을 수도 있을 때 {{ $json.user?.profile?.email ?? "이메일 없음" }} "[email protected]" 또는 "이메일 없음"

?. 는 "있으면 다음으로, 없으면 undefined". ?? 는 "왼쪽이 undefined/null 이면 오른쪽". 두 개 조합으로 에러 없이 안전하게 꺼낼 수 있어요.

실수 패턴 + 디버깅

표현식 안에 줄바꿈 못 씀 — {{ }} 안은 한 줄. 줄바꿈 들어가면 빨간 줄 + 실행 실패. 복잡해지면 Code 노드(Ch.13)로 분리.

문자열에 따옴표 두 종류 — {{ "Hello" + $json.name }} 처럼 큰따옴표 또는 작은따옴표 OK. 단 그 표현식이 들어가는 필드가 큰따옴표로 감싸여 있으면 안쪽엔 작은따옴표만. (HTTP Request 헤더 값에 표현식 쓸 때 자주 부딪힘.)

가장 빠른 디버깅 방법 — 표현식 입력란 우측에 작은 미리보기 박스가 자동으로 떠요. 실제로 실행했을 때 어떤 값이 들어가는지 입력 중에도 즉시 보여주니까, "내가 쓰는 게 맞나" 확인이 1초.

이 10 패턴이 n8n 표현식의 90% 입니다. Set·HTTP Request·Slack·Postgres 어느 노드든 동일하게 적용. 이걸 한 번 익혀두면 Ch.6 부터 나오는 모든 챕터의 코드를 그대로 따라 칠 수 있어요.

입문편 5 챕터가 끝났습니다. Ch.6 부터는 기초편 — Schedule Trigger 로 매일 9시 자동 실행을 시작으로, 일상 자동화 패턴들을 하나씩 실제로 짭니다.

n8n 한국어 교재 · Ch.5 완료 — 입문편 끝

다음 편 → Ch.6 Schedule Trigger — 매일 N시 자동 실행

전체 시리즈 보기

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