TypeORM: effectuer une recherche sur les relations d’un modèle (NestJS inclus)
🤔 Et pourquoi?
Parce que j’ai ne veux pas de faire une recherche complète une fois que j’ai toutes les donnés. Puisque SQL is vraiment optimisé pour les queries. Pour ce cas, je veux filtrer tous les enregistrements sur la base des attributs de la relation.
Je vais utiliser un cas simple.
💡 Premièrement, on a besoin des entités TypeORM
Pour l’exemple le plus simple, nous avons de deux classes. Un Pet
et un Owner
. Un Pet appartient à un Owner. Les deux entités resteront dans le même dossier.
Et
🔨 Création de la méthode du contrôleur
On va utiliser NestJS. Un contrôleur simple ressemble comment l’exemple suivant.
Comment tu peux le voire, l’URL pour la recherche serra /pets/search
.
🚛 L’utilisation des repositories
C’est la méthode la plus intégrée dans Typescript. J’en préfère car elle vient et fonctionne sur les validations de types en utiliser Typescript. Et c’est plus facile de modifier quelque field dans le futur.
Ça va faire le query suivant
🚛 Usando Query Builder desde el repositorio
Cette mêthode ressemble plus à SQL. C’est util si tu est à l’aise avec.
Le query généré de cette fonction serra
⭐ Le résultat final
Voici le contrôleur final. Je vais ajouter un fichier docker-compose si tu veux l’essayer. Aussi il y a une méthode /fake
pour créer des données si tu veux tester la recherche.
C’est seulement le contrôleur principal. Voir mon exemple complet ici .