‫Instructeur : Très bien, et maintenant juste pour
‫terminer cette partie, créons des usines pour obtenir des documents.
‫Et commençons par getOne ici, d'accord ?
‫Exportations. getOne, mais celui-ci est en fait un peu plus
‫délicat, et c'est parce que nous avons
‫une population dans le gestionnaire getTour.
‫Alors, jetons un coup d'œil à cela.
‫Donc, ici, dans celui-ci, nous avons cette population ici, qui est différente
‫de tous les autres gestionnaires d'obtention
‫dans les autres ressources, n'est-ce pas ?
‫Mais bon, ce n'est pas vraiment
‫un problème car nous allons simplement nous permettre
‫de passer un objet d'options de remplissage dans notre fonction getOne, d'accord ?
‫Ainsi, au lieu de simplement transmettre
‫le modèle, nous aurons également le remplissage, donc les options, d'accord.
‫Et donc, à partir de là, nous retournerons ensuite
‫la fonction de gestionnaire normale.
‫Alors, allons-y et copiez encore tout cela, très
‫bien.
‫Donc, nous n'avons pas besoin de celui-ci ici.
‫Alors ici, comme toujours,
‫c'est modèle, et ici c'est doc.
‫Eh bien, en fait ici,
‫document, et ici, encore une fois, données égales à doc.
‫Maintenant, nous devons également apporter quelques
‫modifications ici maintenant à cause de
‫ce remplissage, donc fondamentalement, nous allons d'abord créer la
‫requête, puis, s'il y a l'objet options de remplissage,
‫nous l'ajouterons ensuite
‫à la requête, puis par le Fin, attendez cette requête, d'accord ?
‫Avoir du sens ?
‫Alors, traduisons ce que je viens de dire.
‫Ainsi, la requête est simplement égale à Model. findById, comme ça,
‫non ?
‫Ensuite, s'il existe un objet d'options de remplissage, eh
‫bien,
‫dans ce cas,
‫la requête sera une requête. remplir avec les options de remplissage, d'accord ?
‫Et puis, enfin, nous attendons notre requête et
‫l'enregistrons dans le document.
‫Alors, attendez une requête comme celle-ci, d'accord.
‫Et donc, c'est en fait ça.
‫Donc, cette logique que nous
‫avons ici avec ne pas attendre la requête tout de
‫suite, mais simplement l'enregistrer dans une variable,
‫afin que nous puissions ensuite, à l'étape suivante, la manipuler.
‫En fait, nous avons déjà fait ce genre
‫de choses avant de créer nos fonctionnalités d'API, n'est-ce pas ?
‫Donc, seulement à la fin, lorsque toute la requête est
‫prête, nous l'attendrons et la stockerons quelque part dans une variable.
‫Maintenant, allons-y et utilisons celui-ci partout, en commençant bien
‫sûr par le Tour.
‫Ainsi, getTour sera désormais
‫usine. getOne,
‫et passez l'objet Options de visite
‫et de remplissage, vous vous en souvenez ?
‫Et donc, ce que nous allons faire, c'est dire chemin et critiques.
‫Bon, alors rappelez-vous que la propriété path est essentiellement
‫le champ que nous
‫voulons remplir, et ensuite nous pouvons également spécifier
‫select, alors rappelez-vous celui-ci, où nous
‫spécifions lequel des champs nous voulons réellement obtenir, n'est-ce pas?
‫Mais dans
‫ce cas, nous n'avons rien de
‫tout cela, alors laissons les choses comme ça.
‫Et maintenant, nous pouvons réellement aller de l'avant et supprimer tout cela.
‫Tellement bon.
‫Et, juste pour être sûr, testons cela rapidement.
‫Donc, on va faire un certain Tour,
‫et, effectivement, ça marche toujours.
‫Voyons si celui-ci avait des critiques.
‫Oh, oui, en fait, et vous
‫voyez que le processus de population fonctionne également toujours.
‫Donc, c'était réussi, je dirais.
‫Et donc, maintenant, utilisons également ce getOne dans
‫toutes les autres ressources.
‫Donc, le contrôleur utilisateur ici où nous avons, voyons où
‫il se trouve, ah, ici.
‫Alors, disons usine. getOne, mais
‫uniquement avec le modèle utilisateur et aucun
‫objet d'options de remplissage.
‫D'accord, et puisque nous sommes
‫ici, modifions simplement le message d'erreur ici pour créer
‫un utilisateur, donc
‫cet itinéraire n'est pas défini, il ne le sera jamais,
‫et veuillez utiliser l'inscription à la place.
‫Ensuite, et enfin,
‫la même chose pour les critiques en gros.
‫Donc, les exportations. getReview est
‫égal à l'usine. getOne review,
‫et je pense que nous n'avons pas encore (marmonne) nos itinéraires.
‫Et, en effet, nous ne le faisons pas, donc en ajoutant ceci très
‫rapidement ici, reviewController. getReview, d'accord ?
‫Testons aussi rapidement celui-ci, juste
‫parce que je veux aussi l'ajouter ici
‫à Postman, d'accord ?
‫Donc, il suffit de copier celui-ci parce que c'est similaire, et
‫puis, en effet, c'est get.
‫Et, oui, fonctionne parfaitement bien, stockez-le ici dans les critiques
‫et getReview.
‫D'accord, maintenant tout ce
‫qui manque, c'est une fonction d'usine getAll, n'est-ce pas ?
‫Donc, en
‫gros, pour remplacer ce getAllTours, getAllUsers, que
‫nous devrions également avoir quelque part ici, donc
‫getAllUsers, et aussi getAllReviews, alors copions-le encore ici
‫à partir du contrôleur Tour car en
‫fait c'est celui qui est vraiment
‫complet car il a tout ces fonctionnalités d'API,
‫et donc, après avoir créé notre fonction d'usine
‫getAll, les trois ressources obtiendront alors ces fonctionnalités d'API.
‫Encore une fois, en copiant tout cela,
‫exportez. getAll, et
‫donc maintenant, nous devrons en fait exiger ces fonctionnalités
‫d'API ici, et
‫en fait nous pouvons en fait les supprimer d'ici car
‫nous n'en aurons plus besoin car
‫nous les transférons maintenant vers la fabrique de gestionnaires, n'est-ce pas ?
‫Maintenant, ici, tout ce que nous avons à faire est
‫de remplacer, comme toujours, par model,
‫puis ici, doc et data.
‫Maintenant, d'accord, parfait.
‫Alors, voyons
‫si cela fonctionne, getAll avec Tour.
‫Et maintenant, je veux vraiment voir
‫si cela fonctionne toujours avec toutes
‫ces fonctionnalités, et c'est donc ici,
‫getAll Tours, et donc,
‫ajoutons notre chaîne de requête ici, et disons une durée
‫supérieure ou égale à 10, et trions par prix.
‫D'accord, et nous obtenons donc deux résultats ici.
‫D'accord, ça ne marche pas.
‫Quoi qu'il en soit, nous obtenons les deux résultats (rires) ici,
‫et ils ont tous les deux une durée
‫supérieure à 10, et le prix est
‫de 1497, et le second est plus élevé, d'accord ?
‫Mettons-le ici comme à sept, donc nous obtenons
‫un peu plus de résultats.
‫D'accord, et maintenant nous en avons cinq.
‫Bon, de toute façon, faisons maintenant la même chose pour les critiques,
‫car je suis vraiment ravi de tester ces fonctionnalités de
‫l'API sur les critiques également.
‫Maintenant, un problème que nous avons
‫ici est que ce gestionnaire de route a en fait ces
‫deux lignes de code que tous les autres gestionnaires getAll n'ont pas, d'accord ?
‫Mais, ce que nous allons faire ici, c'est simplement copier également
‫ce code dans notre usine de gestionnaires, d'accord ?
‫C'est une sorte
‫de hack parce que nous n'avons vraiment besoin de celui-ci que pour
‫les critiques de getAll, mais contourner ce serait un peu
‫trop de travail ici dans cette situation, et une fois
‫de plus, je veux simplement rester simple ici, d'accord.
‫Alors, copions
‫ceci ici, et j'ajoute un commentaire ici pour
‫permettre les getReviews imbriquées sur la tournée, d'accord ?
‫Et donc ce filtre, on va aussi le passer ici, d'accord ?
‫Encore une fois, c'est un petit
‫hack, mais je vais
‫le laisser comme ça parce que je pense que c'est raisonnable, d'accord.
‫Quoi qu'il en soit, débarrassons-nous maintenant de
‫ça, donc usine. getAll et révisez, d'accord ?
‫Mettons cela ici à côté de tous les autres.
‫Et maintenant,
‫comme vous le voyez, nous n'avons même plus besoin de ce catchAsync
‫ici, donc je vais le commenter
‫ici parce que, qui sait, peut-être qu'à l'avenir nous en
‫aurons besoin pour une autre fonction Middleware ici, tout droit.
‫Donc, cela a l'air bien
‫et propre, et testons maintenant les critiques de getAll.
‫Très bien, alors enregistrons simplement les modifications ici également.
‫Nous n'en avons pas
‫besoin, mais je veux en fait obtenir toutes les critiques.
‫Donc, pour le moment, nous
‫avons quatre avis, et essayons donc de
‫filtrer les avis uniquement avec une note de quatre, disons.
‫Donc, chaîne de requête, note égale à quatre.
‫Oh, et ça marche
‫vraiment, tellement bien, c'est vraiment bien.
‫Donc, juste comme ça, nous avons accès à toutes ces fonctionnalités d'API
‫comme le filtrage, le tri, la pagination et toutes ces bonnes choses que nous avons
‫implémentées (rires) il y a longtemps dans
‫le cours, n'est-ce pas ?
‫Et, je veux
‫aussi m'assurer que ces critiques getAll on Tour fonctionnent toujours.
‫Alors, vérifions cela, et,
‫oui, vous voyez que c'est effectivement le cas.
‫Ainsi, l'ID de tournée que
‫nous avons ici est exactement celui ici et ici.
‫Donc, celui-ci fonctionne
‫également toujours, et utilisons
‫donc enfin getAll pour le contrôleur utilisateur, d'accord.
‫Donc, fondamentalement, remplaçant simplement
‫ceci, donc l'usine. utilisateur getAll, d'accord.
‫Et, plaçons
‫celui-ci près des autres, d'accord.
‫Et puis celui-ci aussi, donc
‫fondamentalement, tous ceux-ci sont générés par les
‫fonctions d'usine ensemble,
‫puis tous les autres simplement au-dessus d'eux.
‫D'accord, faisons de même ici, celui-ci est déjà
‫beau et propre, et
‫de même pour le contrôleur Tour, alors qu'avons-nous
‫d'autre ici ?
‫Celui-ci, nous pouvons nous en débarrasser,
‫et, d'accord, je pense que ça a l'air bien comme ça.
‫Encore une fois, nous pouvons commenter ce morceau de
‫code car, pour l'instant du moins, nous n'en avons plus besoin.
‫Et donc, juste pour le tester à nouveau ici avec
‫les utilisateurs, rassemblons-les tous,
‫et, en effet, les voici.
‫On peut maintenant aussi dire
‫qu'on ne veut que ceux qui ont
‫le rôle d'utilisateur, et, effectivement, ça marche aussi.
‫Génial, et cela termine en fait cette partie de la
‫création de fonctions d'usine de gestionnaires,
‫et c'était vraiment un énorme pas en avant dans notre
‫projet, alors n'oubliez
‫pas que, un peu plus tard, nous
‫allons également créer une ressource de réservation, et
‫vous voyez donc que probablement nous allons pouvoir
‫créer l'API principale pour ces
‫réservations en cinq secondes environ, en utilisant simplement ces cinq fonctions d'usine, d'accord.
‫Quoi qu'il en soit, bon travail, excellent travail, et
‫je vous verrai dans le prochain.