TypeORM QueryBuilder

NestJS 🔴 Senior

Définition

API fluide pour construire des requêtes SQL complexes avec TypeORM. Supporte les jointures, sous-requêtes, groupements et requêtes paginée.

Analogie

Comme assembler une requête en Lego : tu ajoutes chaque pièce (clause) une par une pour construire la requête finale.

Exemple de code

const users = await this.repo
  .createQueryBuilder('user')
  .leftJoinAndSelect('user.orders', 'order')
  .where('user.isActive = :active', { active: true })
  .orderBy('user.createdAt', 'DESC')
  .take(10)
  .getMany();

Cas d'usage

Construire des requêtes complexes avec jointures, filtres dynamiques et pagination.

Anti-pattern

Concaténer du SQL brut au lieu d'utiliser les paramètrès bindables, ouvrant la porte aux injections SQL.
#database#interview

En entretien

  1. Explique-moi ce qu'est le QueryBuilder de TypeORM.

    C'est une API fluide pour construire des requêtes SQL complexes avec jointures, sous-requêtes, groupements et pagination. C'est comme assembler une requête en Lego, en ajoutant chaque clause une par une.

  2. Quand est-ce que tu utiliserais le QueryBuilder plutôt que le Repository standard ?

    Dès que j'ai besoin de jointures, de filtres dynamiques ou de pagination complexe, le repository classique devient limité et le QueryBuilder offre plus de contrôle.

  3. Quel est le piège de sécurité classique à éviter avec le QueryBuilder ?

    Concaténer du SQL brut au lieu d'utiliser les paramètres bindables comme :active, ce qui ouvre la porte aux injections SQL.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre