Neurocourse

Data mellan noder: expressions och förgreningar

Magin i n8n är att dra data vidare: ett namn från ett formulär hamnar i ett mejl, ett belopp från ett mejl i ett villkor. Du lär dig expressions med {{ }}, att koppla fält genom att dra och IF-noden för förgreningar.

Noder är stommen i ett arbetsflöde. Datan som löper mellan dem är blodet. Dags att lära sig styra den.

Varje node lämnar data vidare till nästa

Klicka på en node som har kört, så ser du dess utdata: fält och värden (namn, e-post, belopp…). Nästa node kan använda vilket som helst av dem.

Expressions i {{ }}

Vilket textfält som helst på en node tar mer än ren text — det tar infogningar:

Ny lead från {{ $json.name }}!
Telefon: {{ $json.phone }}, belopp: {{ $json.amount }} €

Du behöver inte lära dig syntaxen utantill: öppna datapanelen till vänster och dra fältet du vill ha in i texten — n8n skriver expressionen åt dig. Att dra fält är färdighet nummer ett i den här lektionen.

Förgreningar: IF-noden

IF-noden delar flödet i två grenar utifrån ett villkor:

[Lead-formulär] → [IF: amount > 1000?]
  true  → [Telegram till säljaren: ”Fet lead!”]
  false → [Skriv det bara i arket]

Villkor ställer du in med ett formulär: fält, operator (större än / lika med / innehåller), värde. Flera villkor kombinerar du med OCH/ELLER.

Den här lektionens miniövning

Ta gårdagens morgonöversikt och lägg till det här: IF ”temperatur under 5°” → meddelandet får ”Ta med en jacka! 🧥” påhängt. Data från HTTP-noden → ett villkor → två versioner av texten. Det är mallen bakom varje arbetsflöde du bygger härifrån.

Vad $json, $node och punkten betyder

Läs {{ $json.name }} så här: $json är datan som kommit fram till den här noden; punkten betyder ”gå in i”; name är fältet. Är datan nästlad finns det fler punkter: i vädersvaret ligger temperaturen i {{ $json.current.temperature_2m }}. Och vill du ha ett fält från en tidigare node i stället för den precis innan, finns $node:

Från noden bredvid:       {{ $json.amount }}
Från ett nästlat fält:    {{ $json.current.temperature_2m }}
Från en node via namn:    {{ $node["Form"].json.email }}

Igen: du skriver det nästan aldrig, du drar det med musen och n8n fyller i rätt väg med punkter. Men det lönar sig att veta vad punkten betyder: den dag en expression ger tillbaka undefined ser du direkt att du hoppade över en nästlingsnivå.

IF mot Switch

IF-noden ger dig exakt två grenar — true och false. Behöver du fler än två (lead / klagomål / fråga / spam) tar du till Switch — samma idé, flera utgångar. Regeln är enkel: två utfall, IF; många utfall, Switch. Vi gräver i Switch i lektionen om att sortera inkorgen; för nu räcker det att veta att förgreningar skalar.

Myter om data

  • ”Jag måste lära mig expression-syntaxen.” Nej. 95% av tiden drar du fält med musen. Syntaxen spelar bara roll när du ska läsa och putsa lite på det som redan står där.
  • ”Att kopiera värdet för hand går på ett ut.” Nej: ett ”Ivan” du klistrade in blir ”Ivan” för alltid, medan {{ $json.name }} lägger in den nya kundens namn vid varje körning. En expression lever; skriven text är död.
  • ”En tom datapanel betyder att arbetsflödet är trasigt.” Oftast betyder det bara att noden inte har kört. Tryck Execute på noden innan, så dyker datan upp och fälten går att dra.

Varför visar n8n fält du kan dra först efter att en node har kört, och inte med en gång? Tänk efter: innan den kör har n8n ingen aning om vad formuläret eller API:et lämnar tillbaka — om det ens kommer ett ”phone”-fält. Datapanelen visar det riktiga resultatet, inte en gissning. Därför slår ”kör den → se de faktiska fälten → dra dem” att gissa fältnamn i blindo.

När datan inte vill dras

Kolla att noden innan har kört (Execute) — datapanelen visar bara data som faktiskt gått igenom. Tom panel = kör noden igen.

Set-noden: ordning i din data

API-data kommer ofta in med skräpfält och otympliga namn. Edit Fields (Set)-noden är din ompaketerare: den behåller det du behöver, döper om det och slänger resten, så att det längre ner löper en ren och läsbar struktur. Till exempel att banta ner det där skrymmande vädersvaret till två fält:

Före (från HTTP):  { "current": { "temperature_2m": 3.4, "time": "...",
                     "wind_speed_10m": 12, ...ett dussin fält till... } }
Efter (Set):       { "temp": 3.4, "city": "Berlin" }

Att vänja sig vid att städa data före förgreningar och AI-noder sparar timmar av felsökning: när ett fält heter temp och inte current.temperature_2m läses både din prompt och ditt IF-villkor på ett ögonblick.

Gör det nu

Öppna gårdagens morgonöversikt. I Telegram-noden drar du temperaturfältet från datapanelen in i meddelandetexten, så att det står ”Det är {{ $json.current.temperature_2m }}° just nu”. Lägg till en IF-node efter HTTP Request med villkoret ”temperatur < 5”, och i true-grenen hänger du på ”Ta med en jacka! 🧥” i meddelandet. Kör Execute i olika väder (byt runt koordinaterna) och se till att båda grenarna utlöses.

Practice · 4 задачи

Short questions on the lesson — with an explanation for every answer.