Aller au contenu principal

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ètreTypeObligatoireDéfautDescription
AppApp❌—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.
AuthentificationCredential✅—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.).
SSLOptions TLS❌—Options TLS : ca, key, cert, rejectUnauthorized.
Timeout (timeoutSeconds)Nombre (secondes)❌30Délai maximal en secondes (défaut 30, max 300).
Clé de sortie (outputKey)String❌postgresqlResultClé du contexte pour le résultat.
Stopper le flux en cas d'échecBooléen❌trueArrê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
Requêtes paramétrées et secrets

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
rowsLignes retournées par la requête
rowCountNombre de lignes affectées
commandType de commande SQL exécutée
fieldsNoms 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 timeoutSeconds pour les requêtes lourdes ou les batch nocturnes.

Exemple​

Lire des utilisateurs et les utiliser dans la suite du flux :

  1. Un déclencheur démarre le flux.
  2. Le nœud PostgreSQL exécute SELECT * FROM users WHERE id = $1 AND status = $2 avec les binds $.context.userId et $.context.status.
  3. Le résultat est disponible via {{postgresqlResult.rows}} — par exemple une boucle ForEach itère sur rows, ou un nœud Envoyer un e-mail utilise {{postgresqlResult.rows[0].email}}.

Voir aussi​