Nœud PostgreSQL
Le nœud PostgreSQL (type DATABASE_POSTGRESQL) exécute des requêtes SQL sur une base PostgreSQL directement depuis un flux. Il sert à lire ou écrire des données (SELECT, INSERT, UPDATE, DELETE, DDL), à enrichir le contexte avant un nœud HTTP ou un traitement métier, et à persister des données reçues par un déclencheur (webhook, Planificateur, fichier, etc.).
Paramètres
| Paramètre | Type | Obligatoire | Défaut | Description |
|---|---|---|---|---|
| App | App | ❌ | — | Application associée au nœud. Voir Apps. |
Hôte (host) | String | ✅ | — | Nom d'hôte ou adresse du serveur PostgreSQL. Supporte Handlebars. |
Port (port) | Number | ✅ | — | Port de connexion (souvent 5432). Supporte Handlebars. |
Base (database) | String | ✅ | — | Nom de la base de données. |
| Authentification | Credential | ✅ | — | Utilisateur/mot de passe directs ou credential Ecosystem (BASIC_AUTH). |
Requête SQL (query) | String | ✅ | — | Requête SQL avec templating Handlebars. Utilisez $1, $2, … pour les paramètres liés. |
Binds (binds) | Liste (jsonpath) | ❌ | — | Liste d'expressions jsonpath évaluées à l'exécution ($.context.userId, etc.). |
| SSL | Options TLS | ❌ | — | Options TLS : ca, key, cert, rejectUnauthorized. |
Timeout (timeoutSeconds) | Nombre (secondes) | ❌ | 30 | Délai maximal en secondes (défaut 30, max 300). |
Clé de sortie (outputKey) | String | ❌ | postgresqlResult | Clé du contexte pour le résultat. |
| Stopper le flux en cas d'échec | Booléen | ❌ | true | Arrêt du flux en cas d'erreur SQL ou de connexion. |
Requête et paramètres liés
Les valeurs dynamiques sont injectées via des binds positionnels :
SELECT * FROM users WHERE id = $1 AND status = $2
Utilisez toujours des binds ($1, $2, …) plutôt que de concaténer des valeurs dans le SQL, et stockez les mots de passe dans des dictionnaires ou des méthodes d'authentification. Ajustez timeoutSeconds pour les requêtes lourdes ou les batch nocturnes.
Entrée
Le nœud reçoit les valeurs du contexte du flux via des binds positionnels ($1, $2, …) évalués à l'exécution, et le templating Handlebars dans la requête :
{
"binds": ["$.context.userId", "$.context.status"]
}
Les valeurs « falsy » (0, false, '', null) sont conservées telles quelles.
Sortie
Le résultat est stocké dans context.<outputKey> :
| Propriété | Description |
|---|---|
rows | Lignes retournées par la requête |
rowCount | Nombre de lignes affectées |
command | Type de commande SQL exécutée |
fields | Noms des colonnes |
Exemple de résultat pour outputKey: "postgresqlResult" :
{
"postgresqlResult": {
"rows": [
{ "id": 1, "email": "user1@example.com", "created_at": "2023-01-01" },
{ "id": 2, "email": "user2@example.com", "created_at": "2023-01-02" }
],
"rowCount": 2,
"command": "SELECT",
"fields": ["id", "email", "created_at"]
}
}
Le résultat est consommable dans les nœuds suivants via {{postgresqlResult.rows}}, {{postgresqlResult.rowCount}}, ou {{postgresqlResult.rows[0].email}} — par exemple dans un nœud Envoyer un e-mail ou une boucle ForEach qui itère sur rows.
Erreurs
En cas d'erreur SQL ou de connexion, le nœud échoue et stoppe l'exécution du flux (option Stopper le flux en cas d'échec, défaut true). Pour gérer proprement l'échec, ajoutez un nœud On Error au flux.
Voir aussi : Bonnes pratiques — Gestion des erreurs.
Limites
- Timeout maximal de 300 secondes (défaut
30). - Ajustez
timeoutSecondspour les requêtes lourdes ou les batch nocturnes.
Exemple
Lire des utilisateurs et les utiliser dans la suite du flux :
- Un déclencheur démarre le flux.
- Le nœud PostgreSQL exécute
SELECT * FROM users WHERE id = $1 AND status = $2avec les binds$.context.userIdet$.context.status. - Le résultat est disponible via
{{postgresqlResult.rows}}— par exemple une boucle ForEach itère surrows, ou un nœud Envoyer un e-mail utilise{{postgresqlResult.rows[0].email}}.