Jak zarządzać danymi i zmiennymi w n8n

Jak zarządzać danymi i zmiennymi w n8n — wyrażenia i transformacje

Zrozum, jak dane przepływają między węzłami n8n. Opanuj wyrażenia, węzeł Code i filtrowanie — to fundament każdego skutecznego workflow.

2 marca 2026·n8n·9 min czytania

Spis treści

  1. Jak dane przepływają między węzłami w n8n
  2. Jak używać wyrażeń n8n do transformacji danych krok po kroku
  3. Jak używać węzłów Set i Code do przetwarzania danych
  4. Jak filtrować i rozgałęziać przepływ za pomocą węzłów IF i Switch
  5. Często zadawane pytania

Jak dane przepływają między węzłami w n8n

Żeby efektywnie pracować z n8n, musisz rozumieć jeden fundamentalny koncept: każdy węzeł przetwarza tablicę elementów (items). Każdy element to obiekt JSON z polem json (dane) i opcjonalnym polem binary (pliki). Gdy webhook odbiera zamówienie, to jeden element. Gdy Google Sheets zwraca listę 50 wierszy, to 50 elementów — każdy z własnymi danymi.

Gdy połączysz dwa węzły, n8n przekazuje wszystkie elementy z wyjścia pierwszego węzła do wejścia drugiego. Węzeł przetwarzający domyślnie operuje na każdym elemencie osobno — jeśli masz 50 elementów i wyślesz email dla każdego, węzeł Email wykona się 50 razy. To tzw. przetwarzanie jeden-do-jednego.

W panelu Output każdego węzła zobaczysz zakładki z numerami elementów (Item 1, Item 2...) i strukturę JSON każdego z nich. Kliknij ikonę oka na węźle po jego wykonaniu — zobaczysz dokładnie, co weszło i co wyszło. To najważniejsze narzędzie do debugowania workflow i zrozumienia, skąd wziąć dane do następnego kroku.

Dane z jednego węzła dostępne są w kolejnym przez zmienną $json (bieżący element) lub przez odwołanie do konkretnego węzła po nazwie: $('Nazwa Węzła').item.json. Każde pole zagnieżdżone dostępne jest przez kropkę: $json.customer.address.city. Pola tablicowe przez indeks: $json.products[0].name (pierwszy produkt). Ta notacja działa w wyrażeniach we wszystkich węzłach n8n.

Jak używać wyrażeń n8n do transformacji danych krok po kroku

Krok 1: Aktywuj tryb wyrażenia w dowolnym polu

W każdym polu tekstowym węzłów n8n zobaczysz małą ikonę ze znaczkiem ${}. Kliknij ją — pole przełączy się w tryb wyrażenia i otworzy edytor z podglądem. Po lewej wpisujesz wyrażenie, po prawej widzisz wynik dla bieżącego elementu danych. To pozwala budować wyrażenia iteracyjnie, widząc na bieżąco, czy zwracają właściwe wartości.

Krok 2: Odwołuj się do danych z poprzednich węzłów

Podstawowe wyrażenie: {{ $json.nazwaPola }}. Dla zagnieżdżonych danych: {{ $json.user.email }}. Dla tablic: {{ $json.items[0].price }}. Żeby odwołać się do danych z konkretnego węzła (nie bezpośrednio poprzedniego): {{ $('Webhook').item.json.orderId }}. W edytorze wyrażeń po lewej stronie masz też panel z listą dostępnych zmiennych — kliknij na wybraną, żeby wstawić ją do wyrażenia.

Krok 3: Stosuj operacje na tekście, liczbach i datach

Wyrażenia n8n to pełny JavaScript w podwójnych nawiasach klamrowych. Łącz tekst: {{ $json.firstName + ' ' + $json.lastName }}. Zaokrąglaj liczby: {{ Math.round($json.price * 1.23) }} (cena z VAT 23%). Formatuj daty: {{ new Date($json.createdAt).toLocaleDateString('pl-PL') }}. Konwertuj typ: {{ parseInt($json.quantity) * parseFloat($json.unitPrice) }}. Używaj metod string: {{ $json.email.toLowerCase() }}, {{ $json.name.trim() }}.

Krok 4: Używaj wbudowanych metod n8n dla dat i zmiennych środowiskowych

N8n dostarcza kilka pomocniczych obiektów. $now zwraca aktualną datę/czas jako obiekt Luxon (np. {{ $now.toISO() }}, {{ $now.minus({days: 7}).toISO() }} — tydzień temu). $vars pozwala odwoływać się do zmiennych globalnych ustawionych w Settings → Variables — idealne dla tokenów API i konfiguracji wielokrotnie używanych w wielu workflow. {{ $vars.API_KEY }} wstawi zmienną bez ujawniania jej w kodzie workflow.

Jak używać węzłów Set i Code do przetwarzania danych

Węzeł Set to Twoje podstawowe narzędzie do manipulowania danymi bez pisania kodu. Pozwala tworzyć nowe pola, nadpisywać istniejące i usuwać niepotrzebne. Dodaj węzeł Set, kliknij Add Field i podaj nazwę nowego pola oraz wartość (statyczną lub wyrażenie). Włącz opcję Keep Only Set Fields, jeśli chcesz wyczyścić wszystkie inne pola i zostawić tylko te, które ustawiasz — to upraszcza dane przed wysłaniem do zewnętrznego API.

Przykład: po odebraniu zamówienia przez webhook chcesz przygotować dane do wysłania e-mailem. Węzeł Set tworzy pola: customerName ({{ $json.billing.first_name + ' ' + $json.billing.last_name }}), orderTotal ({{ $json.total + ' PLN' }}), orderDate ({{ new Date($json.date_created).toLocaleDateString('pl-PL') }}). Następny węzeł Email może użyć tych pól bezpośrednio bez znajomości oryginalnej struktury zamówienia WooCommerce.

Węzeł Code (dawniej Function) to pełny JavaScript. Używaj go, gdy potrzebujesz logiki niemożliwej do wyrażenia w węźle Set: pętle po tablicach, agregacja (sumowanie wartości zamówień), tworzenie nowych elementów na podstawie istniejących, wywołania do n8n helper functions. Dostęp do danych: const items = $input.all() zwraca tablicę wszystkich elementów. $input.first().json to dane pierwszego elementu. Wynik zawsze zwracaj jako tablicę: return [{json: {suma: 1234, liczba: 10}}].

Przykład węzła Code: liczysz przychód z listy zamówień. Wejście: 20 elementów (zamówień) każdy z polem total. Kod JavaScript: const suma = $input.all().reduce((acc, item) => acc + parseFloat(item.json.total), 0); return [{json: {totalRevenue: suma.toFixed(2), orderCount: $input.all().length}}]; Wynik: jeden element z łącznym przychodem i liczbą zamówień.

Ważne: Węzeł Code wykonuje się w izolowanym środowisku Node.js. Nie masz dostępu do zewnętrznych modułów npm (poza wbudowanymi jak crypto). Jeśli potrzebujesz zewnętrznych bibliotek, możesz na smartxhosting.pl skonfigurować środowisko n8n z dodatkowymi modułami — skontaktuj się z supportem.
Wskazówka: Używaj węzła Set zamiast Code wszędzie, gdzie to możliwe. Set jest czytelniejszy, łatwiejszy w utrzymaniu i szybszy w debugowaniu. Code zostaw dla logiki warunkowej, agregacji i transformacji tablicowych, których nie da się zrealizować przez proste mapowanie pól.

Jak filtrować i rozgałęziać przepływ za pomocą węzłów IF i Switch

Węzeł IF to rozgałęzienie warunkowe — kieruje elementy do jednej z dwóch ścieżek (True lub False) zależnie od spełnienia warunku. Dodaj IF po węźle dostarczającym dane, skonfiguruj warunek (wartość1 operator wartość2) i połącz wyjścia True i False z odpowiednimi kolejnymi węzłami.

Przykłady zastosowania IF: przefiltruj zamówienia powyżej 500 PLN (true: wyślij alert VIP, false: normalne przetwarzanie). Sprawdź, czy email jest wypełniony (true: wyślij potwierdzenie, false: zapisz do listy do ręcznego przejrzenia). Zweryfikuj kod rabatowy (true: zastosuj zniżkę, false: zwróć błąd). Możesz łączyć wiele warunków operatorem AND lub OR — wszystkie muszą być spełnione (AND) lub wystarczy jeden (OR).

Węzeł Switch to wielokierunkowe rozgałęzienie — odpowiednik switch/case z programowania. Skonfiguruj jedno pole do sprawdzenia i listę możliwych wartości. Każda wartość tworzy osobne wyjście. Przykład: pole status zamówienia może mieć wartości "nowe" (wyjście 0: wyślij potwierdzenie), "opłacone" (wyjście 1: przygotuj do wysyłki), "wysłane" (wyjście 2: wyślij numer śledzenia), "anulowane" (wyjście 3: zwrot środków). Możesz też dodać wyjście Fallback dla nieznanych wartości.

Ważna zasada: węzły IF i Switch nie kopiują danych — kierują istniejące elementy na odpowiednie ścieżki. Element, który trafi na ścieżkę True w IF, nie pojawi się na ścieżce False. Jeśli chcesz, żeby ten sam element był przetwarzany przez obie ścieżki, użyj węzła Split In Batches lub skopiuj dane przed IF przez węzeł Set.

Często zadawane pytania

Jak odwołać się do danych z poprzedniego węzła w n8n?

Użyj wyrażenia {{ $json.nazwaPolaLubSciezka }}. $json odnosi się do danych bieżącego elementu. Żeby odwołać się do konkretnego węzła po nazwie, użyj {{ $('Nazwa Węzła').item.json.pole }}. Kliknij ikonę wyrażenia (${}) przy dowolnym polu w n8n, żeby otworzyć edytor z podglądem dostępnych danych i panelem zmiennych.

Czy mogę pisać JavaScript w n8n?

Tak. Węzeł Code przyjmuje kod JavaScript, który ma dostęp do wszystkich danych przychodzących do węzła przez zmienną $input.all() lub $input.first(). Możesz używać pełnego JavaScript ES2020 włącznie z async/await, ale bez importowania zewnętrznych modułów npm (chyba że są wbudowane w środowisko n8n). Wynik zwróć jako return [{json: {pole: wartość}}].

Jak obsłużyć brakujące dane (null/undefined) w wyrażeniach n8n?

Użyj operatora Optional Chaining: {{ $json.user?.address?.city }}. Jeśli któreś pole nie istnieje, wyrażenie zwróci undefined zamiast rzucić błąd. Możesz też podać wartość domyślną: {{ $json.discount ?? 0 }} (operator Nullish Coalescing). Alternatywnie użyj węzła Code i sprawdź istnienie pola przez if ($json.pole !== undefined) przed jego użyciem.

Chcesz uruchomić n8n bez konfiguracji serwera?

smartxhosting.pl oferuje n8n w gotowym kontenerze Docker za 10 zł/miesiąc. Darmowy SSL, 10 GB przestrzeni i dostęp przez przeglądarkę — gotowe w kilka minut.

Zamów hosting n8n
n8nautomatyzacjaintegracja aplikacjiwyrażenia JavaScript
Czy ta informacja była pomocna? 0 klientów oceniło tę informację jako przydatną (0 Głosów)