El error más común de los desarrolladores al comenzar con n8n es asumir que los datos viajan como un único objeto global.
En n8n, todos los nodos operan sobre un array de ítems. Cada elemento del array representa una unidad independiente de procesamiento con la forma:
[
{
"json": {
"id": 104,
"empresa": "Industrias del Centro",
"monto": 42000
}
}
]
Expresiones de n8n vs. Nodo Code
Para transformaciones puntuales en nodos estándar, puedes utilizar la sintaxis de expresiones con doble llave:
{{ $json.empresa.toUpperCase() }}
{{ $json.monto * 1.21 }} // Cálculo con IVA
Sin embargo, cuando necesitas transformar arrays anidados, filtrar datos según reglas de negocio o agrupar líneas de una factura, la herramienta adecuada es el nodo Code (escrito en JavaScript o Python).
// Código dentro del nodo Code (Run Once for All Items)
const items = $input.all();
return items.map(item => {
const data = item.json;
return {
json: {
id: data.lead_id || data.id,
email: data.email?.trim().toLowerCase(),
nombreCompleto: `${data.first_name || ''} ${data.last_name || ''}`.trim(),
montoEstimado: Number(data.presupuesto) || 0,
esPrioritario: Number(data.presupuesto) > 50000,
procesadoEn: new Date().toISOString()
}
};
});
En el nodo Code tienes dos modos de ejecución:
- Run Once for Each Item: El script se ejecuta independientemente para cada elemento del array. Útil para formateos simples.
- Run Once for All Items: Recibes el array completo
$input.all(). Es el modo obligatorio para ordenar, filtrar o agrupar datos (ej. agrupar múltiples transacciones por cliente).
Validación Interactiva
Si recibes una respuesta de una API con 10 productos en un array dentro de una sola clave ('items: [...]'), ¿qué nodo de n8n debes utilizar para convertirlos en 10 elementos individuales de n8n?
Ejercicio Práctico en n8n
Transformación de un webhook simulado
Construye tu primer pipeline de normalización en tu instancia local de n8n:
¿Cómo valoras el contenido técnico de esta lección?
Tu feedback nos ayuda a mejorar los laboratorios prácticos de Eje Z.