Saltar al contenido principal

Nodo function

El nodo function permite escribir código JavaScript propio para cálculos complejos, transformaciones de datos y lógica de procesamiento de mensajes. Con él puede implementar lógica que los nodos estándar no admiten.


Configuración del nodo function​

Ventana «Node Information» del nodo function «auth data»: el campo «Function» contiene código que define grant_type como client_credentials y las cabeceras Content-Type y Accept

1. Name​

Nombre del nodo.
El nombre se muestra en el área de trabajo y ayuda a identificar el nodo.
Si lo deja vacío, el nodo se llamará function.

Ejemplo:

  • Nombre del nodo: auth data

2. Function​

Código JavaScript que se ejecuta para cada mensaje que pasa por el nodo.

Formato de entrada:​

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

Formato de salida:​

  • Para pasar los datos al resto del flujo, el nodo debe devolver un objeto de mensaje (o un array de objetos).
  • Si devuelve null, el mensaje no continúa por el flujo.

Ejemplo:

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

3. Output Example (JSON)​

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

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

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

Ejemplo:

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

Ejemplos de uso​

Ejemplo 1: Multiplicar el valor de 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: Añadir una propiedad nueva​

msg.newProperty = "Hello, World!";
return msg;

Descripción:

  • Crea la propiedad newProperty y la añade al objeto msg.

Ejemplo 3: Procesamiento condicional de mensajes​

if (msg.payload > 100) {
msg.alert = "High value detected!";
} else {
msg.alert = "Value is normal.";
}
return msg;

Descripción:

  • Añade la propiedad alert con un aviso de texto que depende del valor de msg.payload.

Ejemplo 4: Filtrar mensajes​

if (msg.payload > 50) {
return msg; // Dejar pasar el mensaje
}
return null; // Detener el mensaje

Descripción:

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