n8n의 데이터 구조 이해하기

n8n의 데이터 구조 이해하기

n8n이 노드 사이에서 데이터를 어떻게 구조화하고 전달하는지 이해하는 것은 워크플로를 만드는 데 있어 가장 기본이 되는 부분이에요. 이 가이드에서는 데이터 구조 형식과 데이터가 워크플로를 따라 흐르는 방식, 두 가지를 함께 다룰게요.

데이터 구조

n8n에서 노드 사이를 오가는 모든 데이터는 객체의 배열(array of objects) 형태예요. 구조는 다음과 같아요.

[
	{
		// 대부분의 데이터:
		// 각 항목을 'json' 키를 가진 객체로 감쌉니다.
		"json": {
			// 예시 데이터
			"apple": "beets",
			"carrot": {
				"dill": 1
			}
		},
		// 바이너리 데이터:
		// 각 항목을 'binary' 키를 가진 객체로 감쌉니다.
		"binary": {
			// 예시 데이터
			"apple-picture": {
				"data": "....",       // Base64로 인코딩된 바이너리 데이터 (필수)
				"mimeType": "image/png",   // 가능하면 설정하는 것이 좋음 (선택)
				"fileExtension": "png",    // 가능하면 설정하는 것이 좋음 (선택)
				"fileName": "example.png", // 가능하면 설정하는 것이 좋음 (선택)
			}
		}
	},
]

{% hint style="info" %} json 키와 배열 문법을 생략하는 경우

0.166.0 버전부터 Function 노드나 Code 노드를 사용할 때는 json 키가 없으면 n8n이 자동으로 추가해 줘요. 필요하다면 항목을 배열([])로 감싸는 작업도 자동으로 처리돼요. 다만 이 자동 처리는 Function 노드와 Code 노드를 쓸 때만 적용돼요. 직접 자신만의 노드를 만들 때는 여전히 json 키를 가진 데이터를 반환하도록 신경 써야 해요. {% endhint %}

노드 안에서 데이터가 흐르는 방식

워크플로에서 노드를 연결하면 데이터는 자동으로 한 노드에서 다음 노드로 전달돼요.

노드는 여러 항목을 자동으로 처리해요. 노드가 데이터 항목 배열을 받으면 각 항목을 개별적으로 처리하고 설정된 작업을 항목마다 수행해요.

예를 들어 Trello 노드를 Create-Card로 설정하고, 들어오는 데이터의 name-input-value 속성을 이용해서 Name 필드를 채우는 표현식을 만들었다고 해볼게요. 그러면 노드는 항목마다 카드를 하나씩 만들면서, 항상 현재 항목의 name-input-value 값을 사용해요.

예를 들어 이 입력은 카드를 두 개 만든답니다. 하나는 test1, 다른 하나는 test2라는 이름으로요.

[
	{
		"name-input-value": "test1"
	},
	{
		"name-input-value": "test2"
	}
]

드래그 앤 드롭으로 무엇을 매핑하는지 이해하기

데이터 매핑은 필드 경로(field path)를 매핑하고 필드의 값을 불러와요. 예를 들어 다음과 같은 데이터가 있다고 해볼게요.

[
	{
		"fruit": "apples",
		"color": "green"
	}
]

INPUT에서 fruit를 끌어다가 그 값을 사용하고 싶은 필드에 놓으면 fruit를 매핑할 수 있어요. 그러면 {{ $json.fruit }}이라는 표현식이 만들어져요. 노드가 입력 항목을 반복할 때마다 필드의 값은 각 항목의 fruit 값이 되는 거예요.

중첩 데이터 이해하기

다음과 같은 데이터가 있다고 해볼게요.

[
  {
    "name": "First item",
    "nested": {
      "example-number-field": 1,
      "example-string-field": "apples"
    }
  },
  {
    "name": "Second item",
    "nested": {
      "example-number-field": 2,
      "example-string-field": "oranges"
    }
  }
]

n8n은 이 데이터를 다음과 같이 표 형태로 보여주면서, 중첩(nested) 데이터를 담고 있다는 걸 알 수 있도록 nested 필드를 굵게 표시해 줘요.

중첩 필드가 굵게 표시된 예시 데이터의 표 뷰