Nœud Code
Le nœud Code permet d'exécuter du code JavaScript personnalisé dans votre workflow.
Vue d'ensemble
Ce nœud est utilisé pour :
- Traiter des données avec une logique personnalisée
- Transformer des données
- Effectuer des calculs complexes
- Implémenter une logique métier spécifique
Configuration
Code JavaScript
Écrivez votre code JavaScript dans l'éditeur :
- Accès au contexte via l'objet
context - Retournez le résultat avec
return - Utilisez les fonctions JavaScript standard
Structure de base
// Accéder aux données du contexte
const inputData = context.trigger.body;
// Traitement
const processedData = {
// Votre logique ici
};
// Retourner le résultat
return processedData;
Librairies disponibles
Des librairies JavaScript sont mises à disposition dans l'objet libs. Pour la liste complète des librairies disponibles, consultez la section Annexes - Librairies disponibles.
Exemple d'utilisation :
// Générer un UUID
context.yId = libs.uuid();
// Manipuler des dates
const now = libs.dayjs().format('YYYY-MM-DD');
// Calculer un hash MD5
const hash = libs.md5('my-string');
Ecosystem met à disposition plus de 20 librairies JavaScript populaires (lodash, axios, dayjs, uuid, etc.). Consultez la liste complète pour voir toutes les librairies disponibles et leurs exemples d'utilisation.
Accès au contexte
Variables disponibles
Le contexte contient toutes les données des nœuds précédents :
// Données du trigger
context.trigger.body
context.trigger.headers
context.trigger.query
// Résultats des nœuds précédents
context.httpRequest.body
context.condition.result
context.forEach.item
// Variables globales
context.variables.myVariable
Exemple d'utilisation
// Récupérer les données
const order = context.trigger.body;
const user = context.httpRequest.body;
// Traitement
const total = order.items.reduce((sum, item) => {
return sum + (item.price * item.quantity);
}, 0);
const discount = user.plan === 'premium' ? total * 0.1 : 0;
const finalTotal = total - discount;
// Retourner le résultat
return {
orderId: order.id,
total: finalTotal,
discount: discount,
items: order.items
};
Fonctions disponibles
Fonctions JavaScript standard
Toutes les fonctions JavaScript sont disponibles :
JSON.parse(),JSON.stringify()Array.map(),Array.filter(),Array.reduce()String.split(),String.replace()Date,Math, etc.
Exemples
// Parsing JSON
const data = JSON.parse(context.trigger.body.rawData);
// Manipulation de tableaux
const activeItems = context.items.filter(item => item.active);
// Formatage de dates
const date = new Date(context.timestamp);
const formattedDate = date.toISOString();
// Calculs
const average = context.numbers.reduce((a, b) => a + b) / context.numbers.length;
Gestion des erreurs
Try/Catch
Utilisez try/catch pour gérer les erreurs :
try {
const result = processData(context.data);
return result;
} catch (error) {
// L'erreur sera gérée par le nœud On Error
throw error;
}
Validation
Validez les données avant traitement :
if (!context.trigger.body || !context.trigger.body.orderId) {
throw new Error('Order ID is required');
}
// Traitement...
Retourner des données
Retour simple
return {
success: true,
data: processedData
};
Retour conditionnel
if (condition) {
return { status: 'approved' };
} else {
return { status: 'rejected' };
}
Exemples d'utilisation
Exemple 1 : Transformation de données
const input = context.trigger.body;
const transformed = {
id: input.order_id,
customer: {
name: `${input.first_name} ${input.last_name}`,
email: input.email_address
},
items: input.products.map(product => ({
sku: product.product_sku,
quantity: product.qty,
price: product.price
}))
};
return transformed;
Exemple 2 : Calcul complexe
const order = context.trigger.body;
// Calcul du total
const subtotal = order.items.reduce((sum, item) => {
return sum + (item.price * item.quantity);
}, 0);
// Calcul des taxes
const taxRate = 0.20; // 20%
const tax = subtotal * taxRate;
// Calcul des frais de livraison
const shipping = order.shippingMethod === 'express' ? 15 : 5;
// Total final
const total = subtotal + tax + shipping;
return {
subtotal: subtotal,
tax: tax,
shipping: shipping,
total: total
};
Exemple 3 : Validation et transformation
const data = context.trigger.body;
// Validation
if (!data.email || !data.email.includes('@')) {
throw new Error('Invalid email address');
}
// Transformation
const normalized = {
email: data.email.toLowerCase().trim(),
name: data.name.trim(),
age: parseInt(data.age, 10)
};
// Validation de l'âge
if (isNaN(normalized.age) || normalized.age < 0) {
throw new Error('Invalid age');
}
return normalized;
Bonnes pratiques
- Simplicité : Gardez le code simple et lisible
- Documentation : Commentez le code complexe
- Validation : Validez toujours les données d'entrée
- Gestion d'erreurs : Utilisez try/catch pour les opérations risquées
- Performance : Évitez les boucles complexes ou les opérations lourdes
- Test : Testez votre code avec différents scénarios
Limitations
- Temps d'exécution : Le code doit s'exécuter rapidement
- Mémoire : Évitez les opérations consommant beaucoup de mémoire
- APIs externes : Utilisez des nœuds HTTP Request pour les appels API
- Fichiers : Utilisez les nœuds FTP pour les opérations sur fichiers