Terminez d'abord "Leçon 1 : Branchement conditionnel avec les nœuds IF et Switch" pour débloquer cette leçon.Aller à la leçon précédente

Introduction

Dans n8n, les expressions constituent le pont entre les données brutes et la logique dynamique. Au lieu de coder en dur des valeurs, vous écrivez des expressions qui lisent les données des nœuds précédents, appliquent des transformations et transmettent le résultat à l'étape suivante — le tout sans écrire un nœud Code complet.

Chaque expression dans n8n est entourée de doubles accolades et évaluée à l'exécution. Le moteur qui les exécute est un environnement JavaScript léger avec un ensemble de variables intégrées et de méthodes helper. Comprendre cette couche est ce qui distingue un workflow fragile d'un workflow capable de gérer des données réelles.

Syntaxe des expressions et variables intégrées

Les deux variables intégrées les plus importantes que vous utiliserez constamment sont $json et $input. $json fait référence au corps JSON de l'élément en cours de traitement. $input donne accès à l'objet d'entrée complet, y compris la possibilité de référencer d'autres éléments dans la même exécution.

Pour référencer un champ de l'élément courant :

javascript
{{ $json.email }}

Pour référencer la sortie d'un nœud précédent spécifique par son nom :

javascript
{{ $node["HTTP Request"].json.data.userId }}

Pour accéder à l'index de l'élément courant dans un lot :

javascript
{{ $itemIndex }}

Pour obtenir le nombre total d'éléments entrant dans le nœud courant :

javascript
{{ $input.all().length }}

Ces variables sont disponibles dans presque tous les champs qui affichent le toggle d'expression — champs de saisie, valeurs du nœud Set, conditions IF, paramètres HTTP Request, et plus encore.

diagramme montrant comment les variables $json, $input et $node[] correspondent aux données circulant entre trois nœuds en séquence

Transformer des données avec des expressions

Au-delà du simple accès aux champs, les expressions prennent en charge l'ensemble de l'API JavaScript pour les chaînes, tableaux et objets. C'est là que les transformations s'effectuent inline, sans nœud Code dédié.

Convertir une chaîne en majuscules :

javascript
{{ $json.name.toUpperCase() }}

Supprimer les espaces et vérifier une condition :

javascript
{{ $json.status.trim() === "active" ? "send" : "skip" }}

Construire une chaîne formatée à partir de plusieurs champs :

javascript
{{ `Hello ${$json.firstName} ${$json.lastName}, your order #${$json.orderId} is ready.` }}

Analyser une date et la reformater en utilisant les intégrations intégrées $now et Luxon :

javascript
{{ DateTime.fromISO($json.createdAt).toFormat("dd/MM/yyyy") }}

n8n inclut Luxon pour la gestion des dates. Vous le référencez directement comme DateTime dans n'importe quelle expression — aucun import nécessaire.

Aplatir un champ imbriqué en toute sécurité grâce au chaînage optionnel :

javascript
{{ $json.address?.city ?? "Unknown" }}

Ce pattern — chaînage optionnel combiné à la fusion nullish — est essentiel lorsque vos données amont sont incohérentes. Il empêche les expressions de lever des erreurs qui interrompraient toute l'exécution.

Travailler avec des tableaux dans les expressions

Lorsqu'un nœud produit plusieurs éléments, vous avez parfois besoin de les agréger ou de les filtrer depuis une expression en aval. $input.all() vous donne le tableau complet d'éléments sous forme d'objets avec une propriété json.

Récupérer l'e-mail de chaque élément du lot sous forme de tableau :

javascript
{{ $input.all().map(item => item.json.email) }}

Filtrer les éléments où un champ remplit une condition et les compter :

javascript
{{ $input.all().filter(item => item.json.score > 80).length }}

Sommer un champ numérique sur tous les éléments :

javascript
{{ $input.all().reduce((acc, item) => acc + item.json.amount, 0) }}

Ces expressions fonctionnent bien dans un nœud Set ou un nœud Merge lorsque vous souhaitez produire une valeur agrégée unique à partir d'un lot avant de la transmettre en aval.

diagramme comparant une expression sur un seul élément ($json.field) et une expression sur un lot ($input.all().map()) avec des flèches montrant le flux de données

Erreurs courantes

Le problème le plus fréquent est de référencer un champ qui n'existe pas sur certains éléments. L'expression lève un TypeError et l'exécution s'arrête. Utilisez toujours le chaînage optionnel lorsque la présence du champ n'est pas garantie.

Une autre erreur courante est d'oublier que $json fait référence à l'élément courant, et non à la sortie complète d'un nœud. Si un nœud émet cinq éléments et que vous les traitez avec $json.value, chaque élément est traité indépendamment — vous n'obtenez pas un tableau de cinq valeurs, mais une valeur par passage d'exécution.

Confondre $node["NodeName"].json avec $json est également une source régulière de bugs. $node[] vous épingle à la dernière sortie d'un nœud spécifique indépendamment du chemin d'exécution courant, ce qui peut renvoyer des données périmées dans des workflows avec branchements. Utilisez-le de manière délibérée et avec parcimonie.

Enfin, évitez de mettre une logique complexe en plusieurs étapes dans une seule expression. Dès que vous avez besoin de plus de deux opérations enchaînées ou d'une boucle avec des effets de bord, déplacez cette logique dans un nœud Code. Les expressions servent aux transformations, et non au flux de contrôle.

Résumé

Les expressions dans n8n vous permettent de lire, transformer et combiner des données dynamiquement en utilisant $json, $input et $node[] comme principaux points d'accès. Les méthodes JavaScript sur chaînes, tableaux et dates fonctionnent nativement à l'intérieur des doubles accolades, et Luxon est disponible pour le formatage des dates. Les patterns d'accès sécurisé comme le chaînage optionnel et la fusion nullish maintiennent vos workflows résilients face à des données amont incohérentes. Lorsque la logique de transformation dépasse quelques opérations enchaînées, le nœud Code est l'outil approprié — les expressions couvrent tout le reste.

Entraînement

Point de contrôle de la leçon

Révisez la leçon et recevez des conseils sur votre travail.

0/1
Répondu · 0/1
Leçon 2 : Travailler avec les expressions et les transformations de données