Aller au contenu principal

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ètreTypeObligatoireDéfautDescription
ArrayTableau✅—Tableau à parcourir par la boucle.
Variable d'itérationString❌itemNom de la variable représentant l'élément courant.
Taille du lotNombre ou variable❌—Nombre d'éléments traités par lot, en valeur fixe ou en variable (dictionnaire, contexte).
Traitement par lotsOption✅1Parcourir 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 :

  1. ForEach sur {{users}}
  2. Nœud Envoyer un e-mail avec {{user.email}}
  3. Chaque utilisateur reçoit un email

Exemple 3 : Appels API multiples​

Configuration :

  • Array : {{productIds}}
  • Variable : productId

Flux :

  1. ForEach sur {{productIds}}
  2. Requête HTTP(S) vers /api/products/{{productId}}
  3. Traitement de chaque produit
Éviter les boucles infinies

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.

Voir aussi​