이전 노드 데이터 참조하기
이전 노드 데이터 참조하기
현재 노드의 입력과 이전 노드의 출력을 다루는 방법을 정리할게요. 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 참고. Mode를 Run 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 문서를 참고하세요.