Faire une pagination avec Sequelize (sur Typescript)
L’autre jour, j’ai cherché un moyen pour realizer une pagination avec Sequelize sur Typescript. Il y a beaucoup de tutoriels sur comment vous pouvez calculer l’offset et les numeros de pages. Après que j’ai vu autre plugin, j’ai pensé à une solution similaire.
Ce que j’avais besoin était d’ajouter une pagination en utilisant différents modèles sur Sequelize. Donc, créer une clase et utiliser le pouvoir de strong typing
en Typescript, le fichier était prêt à l’emploi. Si on passe le modèle comme type, l’éditeur de code reconnaîtra que data
est un array avec le type de données établi. Ensuite ici, le fichier.
Comme tu peux le voir pour le confort, j’utilise await-to-js
, c’est un capteur d’erreurs dans une fonction async
, Et tu les peux retourner plutôt que faire un throw
. Et, bien sûr, j’utilise le package sequelize-typescript
.
Après vous avez copié et installé le fichier où vous voulez, donc vous pouvez l’utiliser dans votre projet.
Les paramètres sont les suivants:
- Options: Les options du query dans Sequelize. Voici où vous passez les where et toute autre option. Même chose que vous passeriez dans un findAll.
- Page: Le nombre de la page, d’habitude elle vient de votre request.
- Limit: Limite d’enregistrements par page, aussi ils viennent du request.
- Options for calculating total people: C’est optionnel, si vous ne la passez pas, elle prend ce que tu mets dans le premier paramètre options. Elle fait un
COUNT
d’abord pour savoir le nombre total d’enregistrements. Le query ne doit pas être si gros pour une exécution rapide. Pour moi, c’était la même option, mais sans les include que Sequelize a besoin pour se connecter des tables distinctes, parce que ce n’est pas important pour le count.
Et paginated
aurait la même structure que le json que vous pouvez voir. Ça va dépendre de votre framework web, qu’il convertit à Json.