Dane między węzłami: wyrażenia i rozgałęzienia
Magia n8n polega na przepływie danych: imię z formularza trafia do e-maila, kwota z e-maila — do warunku. Opanujesz wyrażenia {{ }}, mapowanie pól przeciąganiem i węzeł IF do rozgałęzień.
Węzły to szkielet przepływu. Dane płynące między nimi to krew. Czas nauczyć się nimi kierować.
Każdy węzeł podaje dane następnemu
Kliknij węzeł, który już się wykonał, a zobaczysz jego wyjście: pola i wartości (imię, e-mail, kwota…). Następny węzeł może użyć każdego z nich.
Wyrażenia w {{ }}
Każde pole tekstowe węzła przyjmuje więcej niż zwykły tekst — przyjmuje podstawienia:
Nowy lead od {{ $json.name }}!
Telefon: {{ $json.phone }}, kwota: {{ $json.amount }} €
Nie musisz uczyć się składni na pamięć: otwórz panel danych po lewej i przeciągnij potrzebne pole do tekstu — n8n sam napisze wyrażenie. Przeciąganie pól to umiejętność numer jeden w tej lekcji.
Rozgałęzienia: węzeł IF
Węzeł IF dzieli przepływ na dwie gałęzie według warunku:
[Formularz leadów] → [IF: amount > 1000?] true → [Telegram do handlowca: „Gruby lead!"] false → [Po prostu zapisz w arkuszu]
Warunki ustawiasz formularzem: pole, operator (większe niż / równe / zawiera), wartość. Kilka warunków łączysz przez I/LUB.
Minićwiczenie tej lekcji
Weź wczorajsze poranne podsumowanie i dodaj do niego to: IF „temperatura poniżej 5°" → do wiadomości dopisuje się „Weź kurtkę! 🧥". Dane z węzła HTTP → warunek → dwie wersje tekstu. To wzorzec każdego przepływu, jaki od teraz zbudujesz.
Co znaczą $json, $node i kropka
Czytaj {{ $json.name }} tak: $json to dane, które dotarły do tego węzła; kropka znaczy „wejdź do środka"; name to pole. Jeśli dane są zagnieżdżone, kropek jest więcej: w odpowiedzi pogodowej temperatura siedzi w {{ $json.current.temperature_2m }}. A gdy chcesz pole z wcześniejszego węzła, a nie z tego tuż przed, masz $node:
Z sąsiedniego węzła: {{ $json.amount }}
Z zagnieżdżonego pola: {{ $json.current.temperature_2m }}
Z węzła po nazwie: {{ $node["Form"].json.email }}
Jeszcze raz: prawie nigdy tego nie wpisujesz, przeciągasz myszą, a n8n uzupełnia właściwą ścieżkę z kropkami. Ale warto rozumieć, co znaczy kropka: w dniu, w którym wyrażenie zwróci undefined, od razu zobaczysz, że pomyliłeś poziom zagnieżdżenia.
IF kontra Switch
Węzeł IF daje dokładnie dwie gałęzie — true i false. Gdy potrzebujesz więcej niż dwóch (lead / reklamacja / pytanie / spam), sięgasz po Switch — ta sama idea, kilka wyjść. Zasada jest prosta: dwa wyniki — IF, wiele wyników — Switch. Switch rozłożymy na czynniki w lekcji o sortowaniu skrzynki; na razie zapamiętaj, że rozgałęzienia się skalują.
Mity o danych
- „Muszę nauczyć się składni wyrażeń." Nie musisz. W 95% czasu przeciągasz pola myszą. Składnia przydaje się tylko do czytania i lekkiego poprawiania tego, co już jest.
- „Skopiowanie wartości ręcznie wyjdzie na to samo." Nie wyjdzie: wklejony „Ivan" zostanie „Ivanem" na zawsze, a
{{ $json.name }}przy każdym uruchomieniu wstawi imię nowego klienta. Wyrażenie żyje; wpisany tekst jest martwy. - „Pusty panel danych znaczy, że przepływ jest zepsuty." Zwykle znaczy tylko, że węzeł się nie wykonał. Naciśnij Execute na poprzednim węźle, a dane się pojawią i pola dadzą się przeciągać.
Dlaczego n8n pokazuje pola do przeciągnięcia dopiero po wykonaniu węzła, a nie od razu? Pomyśl: zanim się wykona, n8n nie ma pojęcia, co zwróci formularz albo API — czy w ogóle będzie pole „phone". Panel danych pokazuje prawdziwy wynik, nie zgadywankę. Dlatego „uruchom → zobacz rzeczywiste pola → przeciągnij" bije zgadywanie nazw w ciemno.
Gdy dane nie chcą się przeciągać
Sprawdź, czy poprzedni węzeł się wykonał (Execute) — panel danych pokazuje tylko dane, które naprawdę przez niego przeszły. Pusty panel = uruchom węzeł jeszcze raz.
Węzeł Set: porządki w danych
Dane z API często przychodzą ze śmieciowymi polami i niewygodnymi nazwami. Węzeł Edit Fields (Set) to twój przepakowywacz: zostawia to, czego potrzebujesz, zmienia nazwy i wyrzuca resztę, żeby dalej płynęła czysta i czytelna struktura. Na przykład ściśnięcie tej rozdętej odpowiedzi pogodowej do dwóch pól:
Przedtem (z HTTP): { "current": { "temperature_2m": 3.4, "time": "...",
"wind_speed_10m": 12, ...tuzin pól więcej... } }
Potem (Set): { "temp": 3.4, "city": "Berlin" }
Nawyk porządkowania danych przed rozgałęzieniami i węzłami AI oszczędza godziny debugowania: gdy pole nazywa się temp, a nie current.temperature_2m, i prompt, i warunek IF czyta się od jednego spojrzenia.
Zrób to teraz
Otwórz wczorajsze poranne podsumowanie. W węźle Telegram przeciągnij pole temperatury z panelu danych do tekstu wiadomości, żeby wyszło „Teraz jest {{ $json.current.temperature_2m }}°". Dodaj węzeł IF po HTTP Request z warunkiem „temperatura < 5", a w gałęzi true dopisz do wiadomości „Weź kurtkę! 🧥". Uruchom Execute przy różnej pogodzie (pozmieniaj współrzędne) i upewnij się, że odpalają obie gałęzie.
Short questions on the lesson — with an explanation for every answer.