# Expressions et données | Docs - nodulz

Source: https://nodulz.com/fr/docs/expressions

Language: fr

Une expression relit une donnée de l’exécution. Commencez par exécuter la source, inspectez sa sortie, puis sélectionnez le champ dans le mapping de l’éditeur. Le chemin dépend du déclencheur et des options du nœud.

## Entrée du déclencheur

`input` désigne l’entrée initiale du workflow. Ajouter un nœud ne remplace pas cette entrée par la sortie du nœud précédent.

> [!FLOW] Transformer une donnée ne remplace pas l’entrée
>
> 1. **Entrée d’origine** <!-- node: data -->
>    `input.amount = 120`
> 2. **Modifier les champs** <!-- node: set -->
>    Ajoute `5` au champ `amount`.
> 3. **Deux valeurs accessibles** <!-- node: data -->
>    `input.amount = 120`\
>    `nodes.set1.amount=125`

Pour reproduire ce schéma, activez **Champs mappés uniquement** dans un nœud Modifier les champs, créez `amount` avec la valeur `{{ input.amount + 5 }}`, puis inspectez sa sortie. Adaptez `set1` au nom technique proposé par votre mapping.

Avec ce payload dans un déclencheur manuel :

```json
{
  "email": "ada@example.test",
  "amount": 120,
  "tags": ["demo", "priority"]
}
```

- `{{ input.email }}` lit l’adresse.
- `{{ input.amount }}` lit le nombre `120`.
- `{{ input.tags[0] }}` lit `demo`.

Pour un webhook qui reçoit le même JSON comme corps de requête, ces chemins deviennent `input.body.email`, `input.body.amount` et `input.body.tags[0]`. Les en-têtes et paramètres d’URL se trouvent dans `input.headers` et `input.query`.

## Sortie d’un nœud

`nodes` contient les sorties des nœuds déjà exécutés, sous leur nom technique. Si un nœud HTTP nommé `http1` renvoie :

```json
{
  "body": { "id": "customer-42", "active": true },
  "status": 200,
  "ok": true
}
```

Lisez l’identifiant avec `{{ nodes.http1.body.id }}`. Si vous activez **Corps uniquement**, la sortie devient directement `{ "id": "customer-42", "active": true }` : utilisez alors `{{ nodes.http1.id }}`.

Le nom visible du service ne suffit pas pour deviner le chemin. Utilisez le nom technique proposé par le mapping. Un nœud placé dans l’autre branche d’un IF peut ne pas avoir été exécuté et ne fournit alors aucune sortie pour cette exécution.

## Texte ou valeur typée

Dans [Modifier les champs](/docs/nodes/set), une expression seule conserve le type de sa valeur :

```text
{{ input.amount }}
{{ input.tags }}
{{ input.amount >= 100 }}
```

Ces expressions donnent respectivement un nombre, une liste et un booléen pour le payload précédent. En revanche, `Montant : {{ input.amount }}` produit le texte `Montant : 120`. Saisir simplement `120` dans une valeur de ce formulaire produit aussi du texte ; `{{ 120 }}` produit un nombre.

Cette règle dépend du paramètre destinataire. Le corps du nœud HTTP est un texte envoyé sur le réseau. Pour envoyer un objet en JSON, utilisez `{{ JSON.stringify(input) }}` et l’en-tête `Content-Type: application/json`. Consultez l’[exemple HTTP](/docs/nodes/http) pour sa configuration.

## Variables créées par Modifier les champs

Un champ simple nommé `customerId` peut être relu avec `{{ vars.customerId }}` ou `{{ customerId }}`. Ces variables sont stockées sous forme de texte. Pour conserver un nombre, un objet ou une liste dans les étapes suivantes, préférez la sortie typée du nœud : `{{ nodes.set1.amount }}` ou `{{ nodes.set1.tags }}`.

Un nom contenant un point, comme `customer.email`, construit un objet imbriqué dans la sortie. Il ne crée pas une variable globale `customer.email`.

## Objets, listes et fichiers

- **Objet JSON** : vous pouvez lire directement ses propriétés. Si `nodes.http1.body` est déjà un objet, n’ajoutez pas de conversion pour accéder à `nodes.http1.body.id`.
- **Chaîne contenant du JSON** : utilisez [Parse JSON](/docs/nodes/parse_json), par exemple avec le champ `input.raw`. La valeur décodée se trouve dans `nodes.parse1.parsed`, si le nom technique est `parse1`.
- **Liste** : pour choisir les éléments à conserver puis les traiter un par un, suivez [Traiter une liste](/docs/working-with-lists). Le guide distingue le chemin de la liste (`source`), le champ de chaque élément et l’élément courant d’une boucle.
- **Fichier** : vérifiez l’encodage et les métadonnées attendus par le destinataire. Un contenu base64, une URL et un chemin de fichier ne sont pas interchangeables.

## Valeurs absentes

Un chemin absent peut donner `null` dans une valeur typée et du texte vide lorsqu’il est inséré dans une chaîne. Une sortie vide ne prouve donc pas que la donnée a été fournie.

Pour un texte facultatif, vous pouvez écrire :

```text
{{ input.name ?? 'Visiteur' }}
```

`??` remplace une valeur absente ou `null`, mais conserve `0`, `false` et une chaîne vide. Pour une adresse ou un identifiant obligatoire, ajoutez une condition de validation et une branche de rejet au lieu d’inventer une valeur par défaut.

Si le résultat surprend, vérifiez l’[entrée réelle et la branche exécutée](/docs/troubleshooting#an-expression-is-empty-or-null). Les erreurs d’évaluation peuvent aussi laisser un diagnostic dans les logs.

## Pour aller plus loin

- [Fonctionnalités - nodulz](https://nodulz.com/fr/product/overview)
- [Catalogue des nœuds - nodulz](https://nodulz.com/fr/product/catalog)
- [Serveur MCP - nodulz](https://nodulz.com/fr/product/mcp)
- [Tarifs - nodulz](https://nodulz.com/fr/pricing)
- [Cas d’usage et automatisations - nodulz](https://nodulz.com/fr/use-cases)
- [Choisissez ce que vos workflows peuvent faire. - nodulz](https://nodulz.com/fr/compare)
- [Documentation - nodulz](https://nodulz.com/fr/docs)
