이전 노드 데이터 참조하기

이전 노드 데이터 참조하기

현재 노드의 입력과 이전 노드의 출력을 다루는 방법을 정리할게요. n8n에서 데이터를 다루다 보면 현재 노드나 워크플로의 이전 노드에서 정보를 참조해야 하는 일이 아주 많거든요.

흔한 참조 방법

데이터에 접근하는 데 가장 자주 쓰는 방법은 이 세 가지예요.

  • $json: 현재 입력 항목에서 JSON 데이터에 접근
  • $('<node-name>').item.json: 이전 노드의 연결된 항목에서 JSON 데이터에 접근
  • $('<node-name>').item.binary: 이전 노드의 연결된 항목에서 바이너리 데이터(파일, 이미지)에 접근

기타 참조 방법

이 방법들은 표현식과 Code 노드 양쪽에서 동작해요.

메서드 설명
$binary 현재 입력 항목에서 바이너리 데이터에 접근
$input.item 지금 처리 중인 입력 항목
$('<node-name>').first() 지정한 노드의 첫 번째 항목 가져오기
$('<node-name>').last() 지정한 노드의 마지막 항목 가져오기
$('<node-name>').all() 지정한 노드의 모든 항목 가져오기

현재 노드 입력

현재 노드의 입력을 다루는 방법들이에요. 일부 메서드와 변수는 Code 노드에서는 쓸 수 없습니다.

Python 지원

Code 노드에서는 Python을 쓸 수 있어요. 다만 표현식에서는 쓸 수 없습니다.

JavaScript

메서드 설명 Code 노드에서 사용 가능?
$binary $input.item.binary의 축약형. 노드에서 들어온 바이너리 데이터
$input.item 처리 중인 현재 노드의 입력 항목. 페어링된 항목과 아이템 링킹에 대한 자세한 내용은 Item linking 참고
$input.all() 현재 노드의 모든 입력 항목
$input.first() 현재 노드의 첫 번째 입력 항목
$input.last() 현재 노드의 마지막 입력 항목
$input.params 이전 노드의 쿼리 설정을 담은 객체. 실행한 작업, 결과 제한 같은 데이터를 포함
$json $input.item.json의 축약형. 노드에서 들어온 JSON 데이터. 항목 구조는 Data structure 참고 ✅ (항목마다 한 번씩 실행할 때)
$input.context.noItemsLeft 불리언. Loop Over Items 노드에서만 사용 가능. 노드에서 무슨 일이 일어나고 있는지 알려줌. 노드가 항목을 계속 처리 중인지 판단할 때 사용

Python

메서드 설명
_input.item 처리 중인 현재 노드의 입력 항목. 페어링된 항목과 아이템 링킹에 대한 자세한 내용은 Item linking 참고
_input.all() 현재 노드의 모든 입력 항목
_input.first() 현재 노드의 첫 번째 입력 항목
_input.last() 현재 노드의 마지막 입력 항목
_input.params 이전 노드의 쿼리 설정을 담은 객체. 실행한 작업, 결과 제한 같은 데이터를 포함
_json _input.item.json의 축약형. 노드에서 들어온 JSON 데이터. 항목 구조는 Data structure 참고. ModeRun Once for Each Item으로 설정했을 때 사용 가능
_input.context.noItemsLeft 불리언. Loop Over Items 노드에서만 사용 가능. 노드가 항목을 계속 처리 중인지 판단할 때 사용

다른 노드의 출력

다른 노드의 출력을 다루는 방법들이에요. 일부 메서드와 변수는 Code 노드에서는 쓸 수 없습니다.

메서드 설명 Code 노드에서 사용 가능?
$("<node-name>").all(branchIndex?, runIndex?) 주어진 노드의 모든 항목을 반환. branchIndex를 주지 않으면 node-name을 표현식·코드를 쓰는 노드와 연결하는 출력을 기본값으로 사용
$("<node-name>").first(branchIndex?, runIndex?) 주어진 노드가 출력한 첫 번째 항목. branchIndex를 주지 않으면 연결 출력을 기본값으로 사용
$("<node-name>").last(branchIndex?, runIndex?) 주어진 노드가 출력한 마지막 항목. branchIndex를 주지 않으면 연결 출력을 기본값으로 사용
$("<node-name>").item 연결된 항목. 현재 항목을 만드는 데 쓰인 지정 노드의 항목을 가리킴. 아이템 링킹에 대한 자세한 내용은 Item linking 참고
$("<node-name>").item.binary 연결된 항목의 바이너리 데이터. 바이너리 속성 이름(data가 기본값)으로 키가 지정됨. 사용 가능한 속성은 BinaryFile 참고
$("<node-name>").params 주어진 노드의 쿼리 설정을 담은 객체. 실행한 작업, 결과 제한 같은 데이터를 포함
$("<node-name>").context 불리언. Loop Over Items 노드에서만 사용 가능. 노드가 항목을 계속 처리 중인지 판단할 때 사용
$("<node-name>").itemMatching(currentNodeInputIndex) Code 노드에서 입력 항목으로부터 거슬러 추적해야 할 때 $("<node-name>").item 대신 사용

이전 노드에서 바이너리 데이터 참조하기

$('<node-name>').item연결된 항목 전체를 반환하므로, JSON 데이터를 읽는 것과 같은 방식으로 바이너리 데이터를 읽을 수 있어요. 항목의 JSON 객체에는 .item.json, 바이너리 데이터(파일·이미지 등 첨부)에는 .item.binary를 쓰면 됩니다.

항목은 여러 바이너리 속성을 각자 이름으로 담을 수 있어서, .item.binary는 단일 값이 아니라 그 속성들의 객체를 반환해요. 대부분의 노드는 data라는 속성 이름으로 바이너리 데이터를 출력하지만, 이름은 상위 노드에 따라 달라질 수 있습니다. 각 바이너리 속성은 fileName, mimeType, fileExtension 같은 필드를 가진 BinaryFile이에요.

예를 들어 HTTP Request 노드가 만든 data 바이너리 속성의 파일 이름을 가져오려면 이렇게 씁니다.

{{ $('HTTP Request').item.binary.data.fileName }}

바이너리 데이터와 그것을 만드는 노드에 대한 자세한 내용은 Binary data 문서를 참고하세요.