Introduction
EdgeDB est une base de données relationnelle moderne qui combine la puissance de PostgreSQL avec un système de types avancé et un langage de requêtes intuitif appelé EdgeQL. En 2026, son intégration avec TypeScript permet de générer automatiquement des types stricts, éliminant les erreurs de runtime liées aux données. Ce tutoriel vous guide à travers une configuration complète et production-ready. Vous découvrirez comment structurer votre schéma, exécuter des migrations et interagir efficacement depuis une application Node.js. L'approche progressive garantit une compréhension solide des concepts fondamentaux avant d'aborder les cas d'usage complexes.
Prérequis
- Node.js 20+ et npm
- TypeScript 5.5+
- EdgeDB CLI installé (edgedb --version)
- Connaissances de base en TypeScript et bases de données relationnelles
Initialisation du projet EdgeDB
mkdir edgedb-typescript-demo
cd edgedb-typescript-demo
edgedb project init --server-instance edgedb_demoCette commande crée un projet EdgeDB lié à une instance locale. Le dossier edgedb est généré automatiquement et contient le schéma et les migrations.
Définition du schéma principal
module default {
type User {
required property name -> str;
required property email -> str {
constraint exclusive;
}
required property created_at -> datetime {
default := datetime_current();
}
multi link posts -> Post;
}
type Post {
required property title -> str;
required property content -> str;
required link author -> User;
}
}Le schéma définit deux types liés par une relation. Le mot-clé constraint exclusive garantit l'unicité des emails. Les liens permettent des relations typées et vérifiées.
Création et application de la migration
edgedb migration create
edgedb migration applyEdgeDB génère automatiquement un fichier de migration à partir du schéma. La commande apply met à jour la base de données de façon sûre et versionnée.
Installation du client TypeScript
npm install edgedb
npm install --save-dev @types/node typescriptLe package edgedb fournit le client officiel avec génération automatique de types à partir du schéma EdgeDB.
Configuration du client typé
import { createClient } from 'edgedb';
export const client = createClient({
dsn: process.env.EDGEDB_DSN,
tlsSecurity: 'strict',
});Le client est configuré avec une DSN et une sécurité TLS stricte. Les types seront régénérés via edgedb generate.
Requête EdgeQL typée
import { client } from './edgedb';
const getUserWithPosts = async (email: string) => {
return await client.querySingle<
{ name: string; posts: Array<{ title: string }> }
>(`
SELECT User {
name,
posts: { title }
}
FILTER .email = <str>$email
LIMIT 1
`, { email });
};La requête utilise des paramètres typés et renvoie des objets dont le type est vérifié par TypeScript. Cela évite les erreurs de structure de données.
Bonnes pratiques
- Toujours régénérer les types après modification du schéma avec
edgedb generate - Utiliser des transactions explicites pour les opérations critiques
- Préférer les requêtes paramétrées pour éviter les injections
- Stocker la DSN dans des variables d'environnement
- Versionner systématiquement les fichiers de migration
Erreurs courantes à éviter
- Oublier de régénérer les types après un changement de schéma
- Utiliser des requêtes brutes sans typage
- Ignorer les contraintes uniques dans le schéma
- Ne pas activer TLS en production
Pour aller plus loin
Approfondissez votre maîtrise d'EdgeDB avec nos formations Learni dédiées aux bases de données modernes et TypeScript.