Code Execution Node
Ejecutar código JavaScript personalizado en sus flujos de trabajo.
Descripción general
El Code Node le permite escribir JavaScript personalizado para transformar datos, realizar cálculos o implementar lógica personalizada que no está disponible en otros nodos.
Configuración
| Campo | Descripción | Obligatorio |
|---|---|---|
Name |
Un nombre descriptivo para este bloque de código | No |
Code |
Código JavaScript a ejecutar | Sí |
Output Variable |
Nombre de la variable para almacenar el resultado | Sí |
Escribir código
El editor de código admite JavaScript completo con resaltado de sintaxis. Su código debe devolver un valor que se almacenará en la variable de salida.
Acceder a variables
Use la sintaxis de plantilla para acceder a variables de nodos anteriores:
// Acceder a una variable simple
const data = {{api_response}};
// Acceder a propiedades anidadas
const userName = {{user.profile.name}};
// Usar en cálculos
const total = {{order.items}}.reduce((sum, item) => sum + item.price, 0);
Ejemplo: Transformar datos
// Acceder a variables de entrada
const users = {{user_list}};
// Transformar datos
const activeUsers = users.filter(u => u.active);
const summary = {
total: users.length,
active: activeUsers.length,
emails: activeUsers.map(u => u.email)
};
// Devolver el resultado
return summary;
Ejemplo: Validación de datos
const input = {{form_data}};
// Validar campos obligatorios
if (!input.email || !input.name) {
return { valid: false, error: 'Missing required fields' };
}
// Validar formato de email
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(input.email)) {
return { valid: false, error: 'Invalid email format' };
}
return { valid: true, data: input };
Insertar variables
Haga clic en el botón Insert Variable para insertar variables disponibles de nodos anteriores directamente en su código.
Limitaciones
- Tiempo límite de ejecución: 30 segundos
- Sin solicitudes HTTP externas (use el nodo HTTP en su lugar)
- Sin acceso al sistema de archivos
- Sin acceso a APIs del navegador
Buenas prácticas
- Mantenga el código enfocado y simple
- Use nombres de variables descriptivos
- Agregue comentarios para lógica compleja
- Maneje casos límite y errores
- Devuelva datos estructurados para facilitar el acceso en nodos posteriores
Funciones disponibles y entorno
El entorno JavaScript está aislado (sandboxed) pero viene precargado con potentes funciones utilitarias para criptografía, transformación de datos y generación de identificadores únicos.
Criptografía y firmas
| Función | Descripción | Ejemplo |
|---|---|---|
signMessage(msg, [privKey]) |
Firma un mensaje usando Ed25519. Devuelve firma y claves. | const res = signMessage("hello"); |
verifyMessage(msg, sig, pubKey) |
Verifica una firma Ed25519. Devuelve true/false. |
verifyMessage(msg, sig, pubKey) |
encryptMessage(msg, [pubKey]) |
Cifra un mensaje usando X25519 + AES-GCM. | const res = encryptMessage("secret"); |
JWT (JSON Web Tokens)
| Función | Descripción | Ejemplo |
|---|---|---|
jwtSign(payload, secret) |
Crea un string JWT firmado con HS256. | const token = jwtSign({ sub: "123" }, "secret"); |
jwtVerify(token, secret) |
Verifica un token y devuelve el payload. Lanza error en caso de fallo. | const claims = jwtVerify(token, "secret"); |
jwtDecode(token) |
Decodifica un token sin verificación. | const claims = jwtDecode(token); |
Utilidades
| Función | Descripción | Ejemplo |
|---|---|---|
uuid() |
Genera un UUID v4 aleatorio. | const id = uuid(); |
md5(string) |
Devuelve hash MD5 (hex). | md5("hello") |
sha1(string) |
Devuelve hash SHA1 (hex). | sha1("hello") |
sha256(string) |
Devuelve hash SHA256 (hex). | sha256("hello") |
sha512(string) |
Devuelve hash SHA512 (hex). | sha512("hello") |
HMAC (Autenticación de mensajes basada en hash)
| Función | Descripción | Ejemplo |
|---|---|---|
hmacSHA1(data, secret) |
Calcula HMAC-SHA1. Devuelve string hexadecimal. | hmacSHA1("message", "secret") |
hmacSHA256(data, secret) |
Calcula HMAC-SHA256. Devuelve string hexadecimal. | hmacSHA256("message", "secret") |
hmacSHA512(data, secret) |
Calcula HMAC-SHA512. Devuelve string hexadecimal. | hmacSHA512("message", "secret") |
Use las funciones HMAC para verificar firmas de webhooks de servicios de terceros como Twilio, Stripe o GitHub.
// Ejemplo: Verificar una firma de webhook de Twilio
var dataString = url + sortedParams;
var computed = hmacSHA256(dataString, authToken);
// Comparar con el header de firma de la solicitud
Codificación
| Función | Descripción | Ejemplo |
|---|---|---|
base64Encode(str) |
Codifica string a Base64. | base64Encode("user:pass") |
base64Decode(str) |
Decodifica string Base64. | base64Decode("dXNlcjpwYXNz") |
hexEncode(str) |
Codifica string a Hex. | hexEncode("hello") |
hexDecode(str) |
Decodifica string Hex. | hexDecode("68656c6c6f") |
urlEncode(str) |
Codifica un string para URL. | urlEncode("search & find") |
urlDecode(str) |
Decodifica un string codificado para URL. | urlDecode("search+%26+find") |
Hashing de contraseñas (Bcrypt)
| Función | Descripción | Ejemplo |
|---|---|---|
bcryptHash(password) |
Genera hash de una contraseña usando Bcrypt (costo 10). | const hash = bcryptHash("mypassword"); |
bcryptVerify(password, hash) |
Verifica una contraseña contra un hash. Devuelve true/false. |
bcryptVerify("mypassword", hash) |
Entradas y variables
inputs: Acceso a entradas específicas del nodo definidas en la configuración del nodo.variables: Acceso a variables globales del flujo.variables._trigger: Contiene metadatos sobre el trigger del flujo de trabajo (método, IP, headers).variables._rawBody: El cuerpo sin procesar de la solicitud del trigger (crucial para la verificación de firmas).