Pagination

NestJS 🟡 Mid

Definition

Pattern pour retourner les resultats par pages via offset/limit ou cursor-based. Evite de charger des milliers d'enregistrements en une seule requete.

Analogie

Comme un livre avec des pages : tu lis page par page au lieu de tout le livre d'un coup.

Exemple de code

async findAll(page = 1, limit = 10) {
  const [items, total] = await this.repo.findAndCount({
    skip: (page - 1) * limit,
    take: limit,
  });
  return { items, total, page, lastPage: Math.ceil(total / limit) };
}

Cas d'usage

Toute API de liste doit etre paginee pour eviter les reponses massives et les timeouts.

Anti-pattern

Retourner tous les enregistrements sans pagination, causant des timeouts avec les grosses tables.
#core#interview