Neurocourse

Dados entre nós: expressões e ramificações

A mágica do n8n está em fazer os dados correrem: um nome de um formulário vai parar num e-mail e um valor de um e-mail, numa condição. Você domina as expressões {{ }}, o mapeamento de campos arrastando e o nó IF para ramificar.

Os nós são o esqueleto de um fluxo. Os dados que correm entre eles são o sangue. Chegou a hora de aprender a conduzi-los.

Cada nó passa os dados para o seguinte

Clique num nó que já rodou e verá a saída dele: campos e valores (nome, e-mail, valor…). O nó seguinte pode usar qualquer um deles.

Expressões entre {{ }}

Qualquer campo de texto de um nó aceita mais do que texto puro: aceita substituições.

Novo lead de {{ $json.name }}!
Telefone: {{ $json.phone }}, valor: {{ $json.amount }} €

Você não precisa decorar a sintaxe: abra o painel de dados à esquerda e arraste o campo que quiser para o texto — o n8n escreve a expressão por você. Arrastar campos é a habilidade número um desta lição.

Ramificações: o nó IF

O nó IF divide o fluxo em dois ramos conforme uma condição:

[Formulário de leads] → [IF: amount > 1000?]
  true  → [Telegram para o vendedor: “Lead gordo!”]
  false → [Só gravar na planilha]

As condições são montadas com um formulário: campo, operador (maior que / igual a / contém), valor. Várias condições se combinam com E/OU.

A miniprática desta lição

Pegue o resumo matinal de ontem e acrescente isto: IF “temperatura abaixo de 5°” → a mensagem ganha “Leve um casaco! 🧥” no final. Dados do nó HTTP → uma condição → duas versões do texto. É o modelo por trás de todo fluxo que você vai montar daqui em diante.

O que significam $json, $node e o ponto

Leia {{ $json.name }} assim: $json são os dados que chegaram a este nó; o ponto quer dizer “entre dentro”; name é o campo. Se os dados estão aninhados, há mais pontos: na resposta do tempo a temperatura fica em {{ $json.current.temperature_2m }}. E quando você quer um campo de um nó anterior, e não do que vem logo antes, existe o $node:

Do nó ao lado:          {{ $json.amount }}
De um campo aninhado:   {{ $json.current.temperature_2m }}
De um nó pelo nome:     {{ $node["Form"].json.email }}

De novo: você quase nunca digita isso, arrasta com o mouse e o n8n preenche o caminho certo com os pontos. Mas entender o que o ponto significa compensa: no dia em que uma expressão devolver undefined, você verá na hora que pulou um nível de aninhamento.

IF contra Switch

O nó IF dá exatamente dois ramos: true e false. Quando você precisa de mais de dois (lead / reclamação / pergunta / spam), recorre ao Switch — mesma ideia, várias saídas. A regra é simples: dois resultados, IF; muitos resultados, Switch. Vamos ver o Switch a fundo na lição sobre triagem da caixa de entrada; por ora, basta saber que as ramificações escalam.

Mitos sobre os dados

  • “Tenho que aprender a sintaxe das expressões.” Não. Em 95% do tempo você está arrastando campos com o mouse. A sintaxe só importa para ler e ajustar um pouco o que já está lá.
  • “Copiar o valor na mão dá no mesmo.” Não dá: um “Ivan” que você colou fica “Ivan” para sempre, enquanto {{ $json.name }} coloca o nome do novo cliente a cada execução. Uma expressão é viva; texto digitado é morto.
  • “Painel de dados vazio quer dizer que o fluxo está quebrado.” Em geral só quer dizer que o nó não rodou. Aperte Execute no nó anterior e os dados aparecem, com os campos prontos para arrastar.

Por que o n8n só mostra campos arrastáveis depois que um nó roda, e não já de cara? Pense bem: antes de rodar, o n8n não faz ideia do que o formulário ou a API vai devolver — nem se vai haver um campo “phone”. O painel de dados mostra o resultado real, não um palpite. Por isso “rodar → ver os campos de verdade → arrastar” ganha de adivinhar nomes no escuro.

Quando os dados não arrastam

Verifique se o nó anterior rodou (Execute) — o painel de dados só mostra dados que passaram de verdade. Painel vazio = rode o nó de novo.

O nó Set: pondo ordem nos dados

Os dados de uma API costumam chegar com campos inúteis e nomes desajeitados. O nó Edit Fields (Set) é o seu reembalador: fica com o que você precisa, renomeia e joga o resto fora, para que rio abaixo corra uma estrutura limpa e legível. Por exemplo, reduzir aquela resposta do tempo tão pesada a dois campos:

Antes (do HTTP):  { "current": { "temperature_2m": 3.4, "time": "...",
                    "wind_speed_10m": 12, ...mais uma dúzia de campos... } }
Depois (Set):     { "temp": 3.4, "city": "Berlin" }

Ganhar o hábito de arrumar os dados antes das ramificações e dos nós de IA poupa horas de depuração: quando um campo se chama temp e não current.temperature_2m, tanto o prompt quanto a condição IF se leem num relance.

Faça agora

Abra o resumo matinal de ontem. No nó Telegram, arraste o campo da temperatura do painel de dados para o texto da mensagem, de modo que fique “Agora está {{ $json.current.temperature_2m }}°”. Adicione um nó IF depois do HTTP Request com a condição “temperatura < 5” e, no ramo true, acrescente “Leve um casaco! 🧥” à mensagem. Rode Execute com climas diferentes (troque as coordenadas) e confirme que os dois ramos disparam.

Practice · 4 задачи

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