Módulo 08

Módulo 08: JavaScript Avanzado con el Nodo Code

Cuando el mapeo visual por arrastrar y soltar no alcanza, el Code Node te da el control total con JavaScript puro dentro de n8n.

Fase 2 · n8n ~55 min Guía práctica

¿Mapeo visual o Code Node?

El 80% de las transformaciones se resuelven con el editor de expresiones ({{ $json.campo }}) y el mapeo de columnas. Pero hay escenarios donde necesitas lógica:

Arquitectura de transformación

El Code Node es un micro-script que corre entre dos nodos de n8n. Recibe items procesados del nodo anterior, ejecuta tu código JS, y emite los datos transformados al siguiente.

Anatomía del Code Node (JavaScript)

El nodo Code tiene dos modos de ejecución:

Modo Comportamiento Variables disponibles
Run Once for All Items El código se ejecuta una vez con todos los items en un array. $items — aparece todos los ítems de entrada
Run Once for Each Item El código se ejecuta por cada item individualmente. $item — cada ítem en secuencia

Específicamente, en JavaScript (Node.js), cada función devuelve los datos para la salida del nodo. El objeto $json está disponible desde la entrada. Al devolver un nuevo array de objetos, estas emitiendo los items transformados.

Métodos Built-in de n8n en JavaScript

Cuando escribes JS dentro del Code Node, tienes acceso a estas variables internas. Te permite más que un script puro — tienes acceso al contexto de ejecución de n8n.

Variable / Método Devuelve Uso
$input.all() Array completo Cuando necesitas ordenar/contar todo
$input.first() Primer item Solo el registro principal (ej. único resultado)
$now DateTime Timestamp ISO 8601 para logs
$workflow.id String ID del workflow en ejecución
$execution.id String ID único de cada ejecución para debug

Ejemplo Práctico: Transformar JSON de Lead

Recibes un webhook con este JSON del cliente:

{
  "nombre": "María López",
  "email": "maria@ejemplo.com",
  "prioridad": 3,
  "canal": "whatsapp"
}

Pero la API de destino espera: { "name": "...", "contact": "...", "score": ..., "source": "..." }

Con el Code Node, escribes:

const input = $input.all();

return input.map(item => ({
  json: {
    name: item.json.nombre,
    contact: item.json.email,
    score: item.json.prioridad * 10,
    source: item.json.canal
  }
}));

Resultado transformado

Ahora el nodo Code emite { name: "María López", contact: "maria@ejemplo.com", score: 30, source: "whatsapp" } — listo para que el nodo Telegram lo consuma sin modificar su configuración.

Checklist del Módulo 08

Desafío de Arquitecto

Creador de Score de Lead

Tu tarea es convertir un JSON de entrada en un puntaje de lead clasificable:

  1. Recibe un webhook con JSON: { lead: string, email: string, canal: "whatsapp"|"email"|"insta", acciones: number }
  2. Usa el Code Node para calcular un score:
    • canal "whatsapp" → +30 puntos
    • canal "email" → +10 puntos
    • cada acción adicional → +5 puntos (min 1)
  3. Redondea el score a entero y añade un campo "nivel":
    • Score ≥ 50 → "caliente"
    • Score < 50 → "frío"
  4. El nodo Code debe emitir el JSON transformado que luego será enviado a Telegram
  5. Verifica en el panel de ejecución que cada lead de tu Postman genera el score correcto.