DataLoader
Architecture 🟡 MidDéfinition
Utilitaire qui batch et cache les requêtes de données pour résoudre le problème N+1 dans GraphQL. Regroupe les appels DB d'un même tick en une seule requête.
Analogie
Un serveur qui attend que toute la table ait commande avant d'aller en cuisine, au lieu de faire un aller-retour par personne.
Exemple de code
const userLoader = new DataLoader(async (ids) => {
const users = await db.users.findByIds(ids);
return ids.map(id => users.find(u => u.id === id));
});
// userLoader.load(1); userLoader.load(2); -> 1 query
Cas d'usage
Resolvers GraphQL qui chargent des entités liées pour éviter N+1 requêtes.
Anti-pattern
Termes liés
En entretien
A quoi sert un DataLoader et quel problème résout-il ?
Il batch et cache les requêtes de données pour résoudre le problème N+1 dans GraphQL, en regroupant les appels DB d'un même tick en une seule requête. C'est comme un serveur qui attend que toute la table ait commandé avant d'aller en cuisine, au lieu d'un aller-retour par personne.
Quel est l'anti-pattern que le DataLoader corrige ?
Un SELECT par resolver sans batching, où 100 items déclenchent 100 requêtes DB.
Fiche mise à jour le 2026-09-27