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

표현식#

버전 1.9.0에서 n8n이 표현식의 템플릿 언어를 변경했습니다

버전 1.9.0에서 표현식과 관련된 문제가 발생한 경우:

  • 포럼에서 문제를 보고해 주세요.
  • 자체 호스팅 사용자는 이전 RiotTmpl로 전환할 수 있습니다. N8N_EXPRESSION_EVALUATOR 값을 tmpl로 설정하세요. 자체 호스팅된 n8n의 구성 방법에 대한 자세한 내용은 환경 변수 문서를 참고하세요.

표현식을 사용하여 다음의 데이터를 기반으로 노드 매개변수를 동적으로 설정할 수 있습니다:

  • 이전 노드
  • 워크플로우
  • n8n 환경

표현식 내에서 JavaScript를 실행할 수 있습니다.

n8n은 Tournament이라고 불리는 템플릿 언어를 생성하고 사용하며, 이를 사용자 정의 방법 및 변수데이터 변환 함수로 확장하여 다른 노드에서 데이터를 가져오거나 메타데이터에 접근하는 것과 같은 일반 작업을 도와줍니다.

n8n은 두 개의 라이브러리를 지원합니다:

  • Luxon, 데이터 및 시간 작업용.
  • JMESPath, JSON 쿼리용.

Python 지원 없음

표현식은 JavaScript를 사용해야 합니다.

n8n의 데이터

표현식을 작성할 때 n8n의 데이터 구조와 동작을 이해하는 것이 도움이 됩니다. 워크플로우에서 데이터를 작업하는 방법에 대한 자세한 내용은 데이터를 참조하십시오.

표현식 작성#

매개변수 값을 설정하기 위해 표현식을 사용하려면:

  1. 표현식을 사용하려는 매개변수 위에 마우스를 가져갑니다.
  2. 고정/표현식 토글에서 표현식을 선택합니다.
  3. 매개변수에 표현식을 작성하거나, 표현식 편집기 열기 Open expressions editor icon를 선택하여 표현식 편집기를 엽니다. 표현식 편집기를 사용하는 경우 변수 선택기에서 사용 가능한 데이터를 탐색할 수 있습니다. 모든 표현식은 {{ 여기에 표현식 작성 }} 형식을 가집니다.

예제: 웹훅 본문에서 데이터 가져오기#

다음 시나리오를 고려하십시오: 웹훅 본문을 통해 데이터를 수신하는 웹훅 트리거가 있습니다. 워크플로우에서 사용하기 위해 그 데이터의 일부를 추출하고 싶습니다.

당신의 웹훅 데이터는 다음과 비슷하게 보입니다:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[
  {
    "headers": {
      "host": "n8n.instance.address",
      ...
    },
    "params": {},
    "query": {},
    "body": {
      "name": "Jim",
      "age": 30,
      "city": "New York"
    }
  }
]

워크플로우의 다음 노드에서 city 값만 가져오고 싶습니다. 다음 표현식을 사용할 수 있습니다:

1
{{$json.body.city}}

이 표현식은:

  1. n8n의 사용자 정의 $json 변수를 사용하여 수신된 JSON 형식의 데이터에 접근합니다.
  2. city의 값을 찾습니다(이 예제에서는 "New York"). 이 예제에서는 JMESPath 문법을 사용하여 JSON 데이터를 쿼리합니다. 이 표현식을 {{$json['body']['city']}}로 작성할 수도 있습니다.

예제: 더 긴 JavaScript 작성#

표현식은 한 줄의 JavaScript로 구성됩니다. 즉, 변수 할당이나 여러 개의 독립적인 작업을 수행할 수 없습니다.

표현식 내에서 JavaScript의 한계를 이해하고 해결 방법에 대해 생각해보려면, 다음 두 개의 코드 조각을 살펴보십시오. 두 코드 예제는 Luxon 날짜 및 시간 라이브러리를 사용하여 두 날짜 사이의 시간을 개월 수로 찾고, 표현식처럼 핸들바 대괄호로 코드를 둘러싸 있습니다.

그러나 첫 번째 예제는 유효한 n8n 표현식이 아닙니다:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// 이 예제는 가독성을 위해 여러 줄로 나누어져 있습니다
// 여전히 단일 줄로 형식을 정리하면 유효하지 않습니다
{{
  function example() {
    let end = DateTime.fromISO('2017-03-13');
    let start = DateTime.fromISO('2017-02-13');
    let diffInMonths = end.diff(start, 'months');
    return diffInMonths.toObject();
  }
  example();
}}

두 번째 예제는 유효합니다:

1
{{DateTime.fromISO('2017-03-13').diff(DateTime.fromISO('2017-02-13'), 'months').toObject()}}

일반적인 문제#

표현식에 대한 일반적인 오류나 문제와 제안된 해결 단계를 보려면 일반적인 문제를 참조하세요.

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