Nœud Foreach
Le nœud Foreach permet d'exécuter une séquence de nœuds pour chaque élément d'un tableau.
Paramètres
| Paramètre | Type | Obligatoire | Défaut | Description |
|---|---|---|---|---|
| Array | Tableau | ✅ | — | Tableau à parcourir par la boucle. |
| Variable d'itération | String | ❌ | item | Nom de la variable représentant l'élément courant. |
| Taille du lot | Nombre ou variable | ❌ | — | Nombre d'éléments traités par lot, en valeur fixe ou en variable (dictionnaire, contexte). |
| Traitement par lots | Option | ✅ | 1 | Parcourir le tableau en le découpant en lots. La taille de chaque lot vaut 1 par défaut. |
Array
Spécifiez le tableau à parcourir :
- Variable du contexte :
{{items}} - Propriété d'un objet :
{{order.items}} - Résultat d'un nœud précédent :
{{lastResponse.data.results}}
En mode simple, le champ Préciser le tableau sur lequel boucler Nouveauté accepte la référence avec ou sans doubles accolades (context.orders ou {{context.orders}}). La coloration Handlebars s'affiche dans les deux cas.
Variable d'itération
Nom de la variable qui contiendra l'élément courant :
- Par défaut :
item - Peut être personnalisé :
orderItem,product, etc. - Accessible dans les nœuds suivants :
{{item}}ou{{orderItem}}
Taille du lot
La taille des lots peut être définie par une variable plutôt qu'une valeur fixe :
- Valeur fixe :
50 - Variable de contexte :
{{context.batchSize}} - Variable de dictionnaire :
{{dictionaries.config.batchSize}}— la valeur est alors dynamisée selon l'environnement
Traitement par lots
Option permettant de parcourir le tableau en le découpant en lots :
- Utile pour traiter de grandes quantités de données
- Permet de gérer la charge de traitement
La taille des lots peut être définie par une variable (dictionnaire ou contexte) plutôt qu’une valeur fixe — ajustez la charge selon l’environnement sans reconfigurer le nœud.
Exemple : {{dictionaries.parameters.batchSize}} ou {{batchSize}}.
Entrée
Le nœud reçoit un tableau du contexte du flux et le parcourt élément par élément. Pour chaque élément :
- La variable d'itération est définie
- Les nœuds suivants sont exécutés
- Le contexte est mis à jour
La boucle continue jusqu'à ce que tous les éléments soient traités.
Sortie
Le nœud définit la variable d'itération dans le contexte pour chaque élément traité ; les nœuds suivants y accèdent avec {{item}} (ou le nom personnalisé). Les données du contexte parent restent accessibles.
Pour une boucle sur {{resultats_db}} avec une variable d'itération client, chaque tour expose l'élément courant :
{
"client": { "id": 1, "email": "user1@example.com", "created_at": "2023-01-01" }
}
À l'intérieur de la boucle, accédez aux champs de l'élément via {{client.email}} (ou {{item.email}} avec le nom par défaut). Le reste du contexte — données du déclencheur, variables parentes — reste accessible.
Erreurs
Une itération en échec peut bloquer la suite du traitement. Gérez les erreurs avec un nœud On Error.
Limites
- Traitez des listes d'objets homogènes : chaque itération applique la même séquence de nœuds, préparez donc une structure d'objets cohérente en amont (nœud Code ou extractors).
- Évitez les boucles trop lourdes : chaque itération consomme du temps d'exécution, et une liste très grande ou des appels API lents par itération peuvent atteindre le timeout de l'environnement.
- Privilégiez le traitement par lots pour les gros volumes, et limitez les opérations coûteuses (appels HTTP, requêtes SQL) à l'intérieur de la boucle.
Exemple
Le nœud est utilisé pour :
- Traiter chaque élément d'un tableau
- Appliquer la même logique à plusieurs éléments
- Parcourir des collections de données
- Effectuer des opérations en boucle
Exemple 1 : Traiter des commandes
Configuration :
- Array :
{{orders}} - Variable :
order
Résultat :
- Chaque commande est traitée individuellement
{{order}}contient la commande courante
Exemple 2 : Envoyer des emails
Configuration :
- Array :
{{users}} - Variable :
user
Flux :
- ForEach sur
{{users}} - Nœud Envoyer un e-mail avec
{{user.email}} - Chaque utilisateur reçoit un email
Exemple 3 : Appels API multiples
Configuration :
- Array :
{{productIds}} - Variable :
productId
Flux :
- ForEach sur
{{productIds}} - Requête HTTP(S) vers
/api/products/{{productId}} - Traitement de chaque produit
Pour les boucles sur de grands tableaux, découpez en lots et gérez les erreurs avec un nœud On Error : une itération en échec peut bloquer la suite du traitement.