Saltar al contenido principal

Nodo function

El nodo function se utiliza para escribir código JavaScript personalizado, permitiendo realizar cálculos complejos, transformaciones de datos y lógica de procesamiento de mensajes. Proporciona flexibilidad para implementar lógica que no es compatible con los nodos estándar.


Configuraciones del nodo function

IMG2

1. Nombre

Campo para especificar el nombre del nodo.
El nombre se muestra en el área de trabajo y ayuda a identificar fácilmente el nodo.
Si se deja vacío, el nodo se llamará function.

Ejemplo:

  • Nombre del nodo: auth data

2. Función

En este campo se introduce el código JavaScript que se ejecutará para cada mensaje que pase a través del nodo.

Formato de entrada:

El código recibe un objeto msg, que representa el mensaje actual.

Formato de salida:

  • El nodo debe devolver un objeto de mensaje (o un array de objetos) para pasar los datos al siguiente paso.
  • Si se devuelve null, el mensaje no se enviará más adelante.

Ejemplo:

// Incrementa el valor de msg.payload en 1
msg.payload = msg.payload + 1;
return msg;

3. Ejemplo de Salida (JSON)

Ejemplo de datos que devuelve la función, en formato JSON.
A partir de este ejemplo se construye el esquema de datos para el siguiente nodo; sus campos aparecen en el bloque Input Schema del siguiente nodo. El editor compara el ejemplo con el código de la función.

Los campos del ejemplo describen la raíz del objeto msg, y no msg.payload: la función devuelve el mensaje completo.

El ejemplo también sirve como datos de prueba: si al presionar el botón Execute en uno de los siguientes nodos (admin-api, http request) la función no pasa los datos, se utiliza el valor de este campo.

Ejemplo:

{
"payload": {
"orderId": 123,
"status": "paid"
}
}

Ejemplos de uso

Ejemplo 1: Multiplicación del valor en msg.payload

msg.payload = msg.payload * 2;
return msg;

Descripción:

  • Toma el valor de msg.payload, lo multiplica por 2 y envía el objeto actualizado.

Ejemplo 2: Agregar una nueva propiedad

msg.newProperty = "¡Hola, Mundo!";
return msg;

Descripción:

  • Crea una nueva propiedad newProperty y la agrega al objeto msg.

Ejemplo 3: Procesamiento condicional de mensajes

if (msg.payload > 100) {
msg.alert = "¡Valor alto detectado!";
} else {
msg.alert = "El valor es normal.";
}
return msg;

Descripción:

  • Agrega la propiedad alert con un mensaje de advertencia dependiendo del valor de msg.payload.

Ejemplo 4: Filtrado de mensajes

if (msg.payload > 50) {
return msg; // Pasar el mensaje más adelante
}
return null; // Detener el mensaje

Descripción:

  • Solo permite pasar mensajes con msg.payload > 50, los demás se detienen.