Neurocourse

Data mellom noder: expressions og forgreninger

Magien i n8n er å dra data videre: et navn fra et skjema havner i en e-post, et beløp fra en e-post i en betingelse. Du lærer expressions med {{ }}, å koble felter ved å dra og IF-noden til forgreninger.

Noder er skjelettet i en arbeidsflyt. Dataene som løper mellom dem, er blodet. På tide å lære å styre dem.

Hver node gir data videre til den neste

Klikk på en node som har kjørt, så ser du utdataene: felt og verdier (navn, e-post, beløp…). Den neste noden kan bruke hvilket som helst av dem.

Expressions i {{ }}

Ethvert tekstfelt på en node tar mer enn ren tekst — det tar innsettinger:

Ny lead fra {{ $json.name }}!
Telefon: {{ $json.phone }}, beløp: {{ $json.amount }} €

Du trenger ikke å pugge syntaksen: åpne datapanelet til venstre og dra feltet du vil ha inn i teksten — n8n skriver expressionen for deg. Å dra felt er ferdighet nummer én i denne leksjonen.

Forgreninger: IF-noden

IF-noden deler flyten i to grener ut fra en betingelse:

[Lead-skjema] → [IF: amount > 1000?]
  true  → [Telegram til selgeren: «Feit lead!»]
  false → [Bare skriv det i arket]

Betingelser setter du opp med et skjema: felt, operator (større enn / lik / inneholder), verdi. Flere betingelser kombinerer du med OG/ELLER.

Denne leksjonens miniøvelse

Ta gårsdagens morgenoversikt og legg til dette: IF «temperatur under 5°» → meldingen får «Ta med jakke! 🧥» på seg. Data fra HTTP-noden → en betingelse → to versjoner av teksten. Det er malen bak enhver arbeidsflyt du bygger heretter.

Hva $json, $node og punktumet betyr

Les {{ $json.name }} slik: $json er dataene som har kommet fram til denne noden; punktumet betyr «gå inn i»; name er feltet. Er dataene nestede, er det flere punktum: i værsvaret ligger temperaturen i {{ $json.current.temperature_2m }}. Og vil du ha et felt fra en tidligere node i stedet for den rett før, finnes $node:

Fra noden ved siden av:   {{ $json.amount }}
Fra et nestet felt:       {{ $json.current.temperature_2m }}
Fra en node ved navn:     {{ $node["Form"].json.email }}

Igjen: du taster det nesten aldri, du drar det med musen, og n8n fyller inn riktig sti med punktum. Men det lønner seg å vite hva punktumet betyr: den dagen en expression gir undefined tilbake, ser du med en gang at du hoppet over et nestingnivå.

IF mot Switch

IF-noden gir deg nøyaktig to grener — true og false. Trenger du mer enn to (lead / klage / spørsmål / spam), griper du til Switch — samme idé, flere utganger. Regelen er enkel: to utfall, IF; mange utfall, Switch. Vi graver i Switch i leksjonen om å sortere innboksen; for nå holder det å vite at forgreninger skalerer.

Myter om data

  • «Jeg må lære expression-syntaksen.» Nei. 95% av tiden drar du felt med musen. Syntaksen betyr bare noe når du skal lese og finpusse litt på det som allerede står der.
  • «Å kopiere verdien for hånd blir det samme.» Nei: en «Ivan» du limte inn, blir «Ivan» for alltid, mens {{ $json.name }} setter inn navnet på den nye kunden ved hver kjøring. En expression lever; tastet tekst er død.
  • «Et tomt datapanel betyr at arbeidsflyten er ødelagt.» Som regel betyr det bare at noden ikke har kjørt. Trykk Execute på noden foran, så dukker dataene opp, og feltene lar seg dra.

Hvorfor viser n8n felt du kan dra, først etter at en node har kjørt, og ikke med en gang? Tenk over det: før den kjører, aner ikke n8n hva skjemaet eller API-et gir tilbake — om det i det hele tatt kommer et «phone»-felt. Datapanelet viser det ekte resultatet, ikke en gjetning. Derfor slår «kjør den → se de faktiske feltene → dra dem» det å gjette feltnavn i blinde.

Når dataene ikke vil dras

Sjekk at noden foran har kjørt (Execute) — datapanelet viser bare data som faktisk har gått gjennom. Tomt panel = kjør noden på nytt.

Set-noden: orden i dataene dine

API-data kommer ofte med søppelfelt og klønete navn. Edit Fields (Set)-noden er ompakkeren din: den beholder det du trenger, gir det nytt navn og kaster resten, så det lenger ned løper en ren og lesbar struktur. For eksempel å skjære det svulstige værsvaret ned til to felt:

Før (fra HTTP):  { "current": { "temperature_2m": 3.4, "time": "...",
                   "wind_speed_10m": 12, ...et dusin felt til... } }
Etter (Set):     { "temp": 3.4, "city": "Berlin" }

Å venne seg til å rydde i data før forgreninger og AI-noder sparer deg for timer med feilsøking: når et felt heter temp og ikke current.temperature_2m, leses både prompten og IF-betingelsen på et blunk.

Gjør det nå

Åpne gårsdagens morgenoversikt. I Telegram-noden drar du temperaturfeltet fra datapanelet inn i meldingsteksten, så det står «Det er {{ $json.current.temperature_2m }}° akkurat nå». Legg til en IF-node etter HTTP Request med betingelsen «temperatur < 5», og i true-grenen setter du «Ta med jakke! 🧥» på meldingen. Kjør Execute i ulikt vær (bytt om på koordinatene), og pass på at begge grenene utløses.

Practice · 4 задачи

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