← Volver al blog

Ejercicio de expresiones de n8n: prepara actualizaciones sin perder valores válidos

Practica expresiones de n8n con registros sintéticos: distingue campos ausentes, null y vacíos, compara valores por defecto y prepara datos sin escrituras reales.

Una persona clasifica objetos que representan distintos valores de campos en un paquete para practicar expresiones de n8n al preparar una actualización.

Comprobado con las fuentes citadas el .

Tu ejercicio de expresiones de n8n

Este ejercicio editorial utiliza expresiones de n8n para preparar los datos de una actualización manteniendo la distinción entre campos ausentes, null, cadenas vacías, cero y false. Tu tarea consiste en predecir cada resultado, inspeccionarlo en tu propio entorno y explicar cualquier diferencia. Las expresiones propuestas y los resultados esperados que aparecen a continuación no se han ejecutado ni validado.

Necesitas tu propio entorno de n8n Cloud o Self-hosted. n8n documenta expresiones a nivel de parámetro con vistas previas del valor calculado en ambos. Utiliza Edit Fields en modo JSON Output para proporcionar un registro sintético cada vez, seguido de otro nodo Edit Fields para el mapeo. No necesitas ninguna API externa ni credenciales.

Mantén este ejercicio en tu entorno local: prepara únicamente la salida. Las escrituras reales, la serialización HTTP y las reglas específicas del destino sobre omisión, borrado y validación quedan fuera de su alcance. Creemos que separar la preparación de los datos de su envío facilita razonar sobre las reglas de los campos.

Sources: n8n-docs/docs/build/work-with-data/expressions-versus-data-nodes.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub

Predice la presencia antes de elegir valores por defecto

Dos bandejas contrastan políticas de sustitución restringidas y amplias para los valores vacíos y falsy de los campos del ejercicio.
Las dos bandejas ilustran cómo distintas políticas de valores alternativos pueden conservar o sustituir diferentes tipos de valores.

Crea estas entradas por separado: {}, {"value":null}, {"value":""}, {"value":0}, {"value":false}, {"value":"Ada"}, {"value":[]} y {"value":{}}. Añade "unrelated":"drop-me" a cada registro. Primero predice si existe value y después evalúa {{ Object.prototype.hasOwnProperty.call($json, 'value') }}. MDN distingue la presencia de una propiedad propia de su valor, incluidos null o undefined.

Compara {{ $json.value ?? 'DEFAULT' }} con {{ $ifEmpty($json.value, 'DEFAULT') }}. MDN documenta que ?? aplica el valor por defecto a null y undefined; n8n documenta una política más amplia de valores vacíos para $ifEmpty(). Esta tabla de referencia de expresiones de n8n ofrece predicciones editoriales para compararlas con tu salida.

Resultados previstos para el campo sintético value
Valor de entrada¿Clave propia?Con ??Con $ifEmpty()
AusentefalseDEFAULTDEFAULT
nulltrueDEFAULTDEFAULT
Cadena vacíatrueCadena vacíaDEFAULT
0true00
falsetruefalsefalse
AdatrueAdaAda
[]true[]DEFAULT
{}true{}DEFAULT

Sources: n8n-docs/docs/build/work-with-data/transform-data/expression-reference/root.md at main · n8n-io/n8n-docs · GitHub, Nullish coalescing operator (??) - JavaScript | MDN, Object.prototype.hasOwnProperty() - JavaScript | MDN

Construye los datos de actualización con una lista de campos permitidos

Una mano selecciona un objeto que representa un campo permitido y deja los datos ajenos fuera del paquete de actualización preparado.
La secuencia de selección ilustra la preparación de datos con una lista de campos permitidos que excluye las entradas ajenas.

Para este ejercicio, utiliza una política diferente para las actualizaciones: omite un value ausente, conserva un null explícito y preserva cualquier otro valor proporcionado y su tipo. Permite únicamente la clave value en los datos de actualización. Estos son requisitos editoriales, no el contrato de un destino real. A nuestro juicio, los valores por defecto y la inclusión en una actualización merecen decisiones separadas porque responden a preguntas distintas.

Expresión propuesta para los datos de actualización: {{ { ...(Object.prototype.hasOwnProperty.call($json, 'value') ? { value: $json.value } : {}) } }}. MDN documenta que expandir un objeto vacío omite la propiedad, mientras que asignar undefined deja la propiedad presente. Esa distinción se refiere a los objetos de JavaScript.

Sigue esta secuencia propuesta en el nodo de mapeo. n8n documenta el uso de expresiones en JSON Output de Edit Fields y los controles para excluir los campos de entrada no mapeados; las etiquetas de los controles pueden variar entre instalaciones.

  1. Selecciona el modo JSON Output e introduce la expresión propuesta para los datos de actualización.
  2. Configura la inclusión de datos en la salida para excluir los campos de entrada originales.
  3. Inspecciona la vista previa calculada y después ejecuta el nodo de mapeo local.
  4. Compara la presencia de la clave, el valor y el tipo con tu predicción escrita para cada registro.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub, Object.prototype.hasOwnProperty() - JavaScript | MDN, Spread syntax (...) - JavaScript | MDN

Resuelve problemas con los valores por defecto y las expresiones condicionales

Si cero o false se convierten en DEFAULT, comprueba si has utilizado ||. MDN documenta que || recurre al valor alternativo ante cualquier valor falsy, mientras que ?? conserva los valores distintos de null y undefined. Si los arrays u objetos vacíos se convierten en DEFAULT, compara ese resultado con la política documentada de $ifEmpty() de n8n.

En las expresiones de n8n, si una condición controla si una clave existe, inspecciona las claves del objeto resultante además del valor que se muestra. Las comprobaciones de presencia y la construcción condicional de objetos permiten cumplir ese requisito; una comprobación de veracidad por sí sola no puede distinguir todos los casos proporcionados.

Como ampliación opcional sobre el acceso a propiedades anidadas, el tutorial del proveedor escrito por Suyash Raj ilustra el patrón {{ $json.address?.city ?? 'Unknown' }}. Trátalo como una ampliación propuesta. Si la lógica falla después de trasladarla a un nodo Code, n8n documenta que las funciones auxiliares de transformación de nivel superior, como $if(), solo están disponibles en el editor de expresiones.

Sources: n8n-docs/docs/build/work-with-data/transform-data/expression-reference/root.md at main · n8n-io/n8n-docs · GitHub, Nullish coalescing operator (??) - JavaScript | MDN, n8n Expressions and JavaScript in Workflows, Object.prototype.hasOwnProperty() - JavaScript | MDN, Spread syntax (...) - JavaScript | MDN, n8n-docs/docs/build/code-in-n8n/use-built-in-shortcuts.md at main · n8n-io/n8n-docs · GitHub

Criterios de finalización y reflexión

Termina registrando por separado los resultados previstos y los observados. Utiliza esta lista de comprobación editorial para decidir si el mapeo que propones cumple los requisitos del ejercicio.

Reflexión propuesta: ¿por qué sustituir un campo ausente por DEFAULT sería diferente de omitirlo? Explica qué expresión elige un valor alternativo y cuál decide si se incluye una propiedad. Antes de adaptar el resultado a una integración real, sustituye la política del ejercicio por el contrato documentado de ese destino.

Sources: Nullish coalescing operator (??) - JavaScript | MDN, Object.prototype.hasOwnProperty() - JavaScript | MDN, Spread syntax (...) - JavaScript | MDN

Ponlo en práctica

Retos prácticos de n8n

Elige un reto y construye un workflow que funcione en tu propio entorno de n8n, con cinco pistas progresivas por reto.

Prueba un reto práctico

Para tu equipo

Programas de formación en n8n a medida para un equipo o departamento, en tu propia instancia de n8n y con tus herramientas y datos.

Formación para tu equipo

Evaluación de habilidades de n8n

Un cuestionario gratuito de unos 20 minutos, en inglés: 30 preguntas en 10 áreas y un nivel de principiante a experto. En AI Adoption Score, otro proyecto del autor de este sitio.

Descubre tu nivel de n8n