Newsletter

JavaScript mínimo para n8n: só o que você vai usar de verdade

Oito construções resolvem quase todo node Code: laço, map, filter, reduce, encadeamento opcional e as funções de texto que importam no Brasil.

JavaScript mínimo para n8n: só o que você vai usar de verdade

Para usar o node Code no n8n você não precisa aprender JavaScript — precisa de cerca de oito construções. Elas cobrem praticamente tudo que aparece em automação: pegar um campo, percorrer uma lista, filtrar, somar, tratar campo vazio e devolver o resultado no formato certo. Este texto é essa lista curta, com exemplos que você copia e adapta, sem rodeio sobre teoria de linguagem.

Adicione ao Google Notícias

Antes de tudo: o formato de entrada e saída

Dentro do Code, os itens chegam numa variável e você devolve uma lista. O esqueleto mínimo:

for (const item of $input.all()) {
  item.json.novoCampo = 'valor';
}
return $input.all();

Uma facilidade importante: o Code adiciona a chave json sozinho quando ela falta e embrulha o retorno em array se necessário. Então isto também funciona:

return [{ nome: 'Maria' }, { nome: 'João' }];

1. Pegar um campo

const email = $input.first().json.email;

Ou, dentro de um laço, item.json.email. É o equivalente ao $json.email das expressões.

2. Percorrer todos os itens

for (const item of $input.all()) {
  item.json.nomeCompleto = item.json.nome + ' ' + item.json.sobrenome;
}
return $input.all();

Esse é o padrão que resolve a maior parte dos casos: passa por cada registro e ajusta alguma coisa.

3. Transformar uma lista em outra

return $input.all().map(item => ({
  json: {
    nome: item.json.nome,
    ativo: item.json.status === 'A'
  }
}));

O map gera um item novo para cada item de entrada. Use quando quiser reduzir o registro só aos campos que interessam — bom hábito antes de mandar dados para outro sistema.

4. Filtrar

return $input.all().filter(item => item.json.valor > 100);

Devolve só os itens que atendem à condição. Para condição simples, porém, prefira o node Filter: fica visível no desenho do fluxo, em vez de escondido dentro de uma caixa de código.

Ilustração de uma lista sendo transformada em outra

5. Somar ou contar

const total = $input.all()
  .reduce((soma, item) => soma + Number(item.json.valor || 0), 0);
return [{ json: { total, quantidade: $input.all().length } }];

Repare em dois detalhes que evitam erro: Number(...) converte texto em número — API costuma devolver "150.00" como texto, e somar texto concatena em vez de somar. E || 0 protege contra campo vazio.

6. Tratar campo que pode não existir

const telefone = item.json.contato?.telefone ?? 'não informado';

Duas construções curtas que resolvem a maior fonte de falha em produção:

  • ?. — tenta descer; se o caminho não existir, devolve vazio em vez de quebrar o fluxo.

  • ?? — usa o valor da direita quando o da esquerda estiver vazio.

Se você for memorizar uma coisa só deste texto, memorize essas duas. A falha que mais derruba automação em produção é o registro em que um campo opcional não veio — e essa linha resolve.

7. Texto: as quatro funções que importam

texto.trim()                    // remove espaços das pontas
texto.toLowerCase()             // tudo minúsculo
texto.replace(/\D/g, '')        // só os números (limpa CPF, telefone)
texto.split(',')                // quebra em lista

A terceira é a mais útil no Brasil: transforma (11) 98765-4321 em 11987654321, que é o formato que quase toda API espera.

8. Data no formato certo

const hoje = new Date().toISOString().split('T')[0];   // 2026-08-15

Para manipulação de data, no entanto, costuma ser mais simples usar as funções de expressão do próprio n8n, como $today.minus(7, 'days'), em vez de código.

Os três erros que mais aparecem

Somar texto. "10" + "5" devolve "105", não 15. Converta com Number() antes de qualquer conta.

Esquecer o return. Code sem retorno devolve vazio, e o node seguinte não recebe nada. Se o fluxo "parou sem erro" depois de um Code, comece por aqui.

Comparar com um sinal de igual só. Em condição, use ===. Com um sinal só você está atribuindo valor, não comparando.

Vale saber onde esse código roda: nas versões recentes, o Code é executado em processo isolado do n8n, o que é uma proteção de segurança importante. Isso significa que ele não enxerga as variáveis de ambiente do servidor por padrão. Código que dependia disso parou de funcionar depois da mudança.

Peça ajuda à IA — com uma condição

Descrever em português o que precisa acontecer com o dado e pedir o trecho pronto funciona muito bem para transformações pequenas. É uso legítimo e economiza tempo.

A condição: entenda o que o código faz antes de colocar em produção. Um trecho que você não compreende vira um ponto cego no fluxo, e o momento de descobrir isso não pode ser durante uma falha às três da manhã.

Com laço, map, filter, reduce, ?., ??, quatro funções de texto e Number(), você resolve praticamente todo Code que uma automação exige.

Esta aula faz parte do Curso de n8n do zero ao avançado, com todas as aulas em portugues.

Perguntas frequentes

Preciso saber JavaScript para usar o n8n?

Não para a maioria dos fluxos, que se montam com nodes de configuração. Para o node Code, cerca de oito construções cobrem quase tudo: percorrer itens, transformar lista, filtrar, somar, tratar campo vazio e formatar texto.

Como acessar os dados dentro do node Code?

Com $input.all() para todos os itens ou $input.first() para o primeiro. Dentro de um laço, os dados de cada registro ficam em item.json, da mesma forma que $json funciona nas expressões.

Por que a soma dos meus valores deu errado?

Quase sempre porque os valores vieram como texto e a soma concatenou em vez de somar. Converta com Number() antes de qualquer operação matemática, e proteja campos vazios com || 0.

O que fazer quando um campo pode não existir?

Usar ?. para descer no caminho sem quebrar quando ele não existe, e ?? para definir um valor alternativo. É a proteção mais importante em produção, onde sempre aparece o registro com o campo opcional faltando.

Posso pedir para uma IA escrever o código do node?

Pode, e funciona bem para transformações pequenas. A precaução necessária é entender o que o trecho faz antes de colocá-lo em produção — código que ninguém compreende vira um ponto cego, e isso cobra caro no primeiro incidente.

Por que meu Code não enxerga as variáveis de ambiente?

Porque nas versões recentes ele roda em processo isolado do n8n, por segurança, e o acesso às variáveis do sistema fica bloqueado por padrão. Código que dependia desse acesso precisa ser ajustado para receber os valores por outro caminho.