‫Jonas : Continuons à créer quelques fonctions d'usine,
‫cette fois pour mettre à jour et pour créer des ressources.
‫Et donc, maintenant que nous savons déjà comment cela fonctionne,
‫il est très simple de continuer à faire de même pour la
‫mise à jour.
‫Donc les exportations. updateOne,
‫et reprenons le code à partir du
‫contrôleur de tournée.
‫D'accord.
‫Et nous avons maintenant une tonne de
‫fichiers ouverts parce que nous les modifions tous
‫un peu en même temps.
‫Alors copions ceci et
‫collons-le ici.
‫Et donc, ce qui nous intéresse, c'est, encore une fois, cette partie.
‫D'accord.
‫Et maintenant, bien sûr, nous devons créer cette fonction d'usine car
‫nous ne voulons pas la renvoyer.
‫Au lieu de cela, nous voulons
‫retourner une fonction, qui à son tour va retourner ceci.
‫Droit?
‫C'est donc très simple.
‫Nous utilisons une simple fonction de flèche où nous passons
‫le modèle, puis renvoyons implicitement tout ce qui vient après la flèche.
‫Alors, tout ça.
‫D'accord.
‫Donc, comme avant, remplaçons le modèle spécifique
‫par un
‫modèle général, puis remplaçons tout cela ici par document.
‫Ou en fait, avec doc, comme nous le faisions avant.
‫Et ici, ce n'est
‫pas un document, et là-bas, là où nous envoyons réellement
‫les données, ce serait bien de lui donner le nom de
‫propriété des données que nous envoyons.
‫Par exemple, les critiques, puis le document ou les visites.
‫D'accord.
‫Mais c'est un peu trop de travail pour le mettre en œuvre maintenant.
‫Et donc, je vais simplement le laisser comme ça où j'ai
‫envoyé, encore une fois, des données.
‫D'accord.
‫Ainsi sont allées nos données
‫ici, et puis l'enveloppe là-dedans, encore une fois,
‫va s'appeler données.
‫D'accord.
‫Et donc, cela devrait fonctionner
‫maintenant parce que tout le reste est vraiment identique.
‫Et donc, nous pouvons aller de l'avant, nous débarrasser de
‫tout cela et simplement
‫dire usine. updateOne, transmettez
‫le modèle Tour et appelez-le un jour.
‫D'accord?
‫Donc, vraiment simple.
‫Ensuite, la même chose pour les utilisateurs.
‫Encore une fois, nous avons updateUser.
‫Cet itinéraire n'est pas encore mis en œuvre.
‫Et donc, remplaçons simplement tout cela ici par
‫notre fonction d'usine updateOne.
‫D'accord.
‫Et donc, comme avant, cette fonction updateUser est
‫réservée aux administrateurs, d'accord ?
‫Et uniquement pour mettre à jour des données qui ne
‫sont pas le mot de passe, car rappelez-vous, chaque fois que nous utilisons, où est-ce, donc
‫chaque fois que nous utilisons findById et mise à jour, tous
‫les middleware sécurisés ne sont pas exécutés.
‫Alors rappelez-vous comment nous en avons parlé plusieurs fois.
‫Et donc, encore une fois,
‫il est vraiment important que nous n'essayions pas de modifier les mots de passe ici à
‫l'aide de cet utilisateur de mise à jour.
‫D'accord?
‫Écrivons en fait cela ici.
‫Avec ça.
‫Super.
‫Et maintenant, enfin, aussi,
‫mettons-le dans le contrôleur de révision.
‫D'accord.
‫Donc les exportations. updateReview,
‫puis notre Review.
‫Alors celui-là est très simple.
‫Allons maintenant de l'avant et ajoutons également ces itinéraires à Postman.
‫Nous avons donc
‫Delete Review, et maintenant ajoutons-le simplement ici en tant que PATCH.
‫Et la chose dont nous avons également besoin pour implémenter la
‫route dans le routeur d'examen.
‫Alors faisons-le aussi.
‫Mais d'abord, je vais l'enregistrer ici dans les critiques.
‫Donc, mettez à jour l'examen.
‫Donc ici, dans les routes de révision,
‫nous devons ajouter la méthode patch, puis
‫reviewController. updateReview.
‫D'accord.
‫Jetons donc un coup d'œil à l'une de ces
‫critiques ici, disons celle-ci, et mettons à jour la note à quatre.
‫D'accord.
‫Donc le
‫corps, réglez-le à quatre.
‫Et envoyez-le maintenant.
‫D'accord, et comme nous pouvons le voir, nous récupérons notre nouvelle critique
‫avec la note mise à jour, comme prévu.
‫Et encore une fois, nous allons nous occuper de l'autorisation un peu
‫plus loin dans la section.
‫Pour l'instant, je voulais juste que ça marche.
‫Donc, utilisateurs, mettons maintenant à jour également les utilisateurs.
‫D'accord?
‫Alors GET, et PATCH.
‫Alors, obtenons tous les utilisateurs ici.
‫Disons celui-ci.
‫Et changeons le
‫nom
‫en Administrateur, qui auparavant était simplement admin.
‫D'accord?
‫Et donc, celui-ci a également fonctionné.
‫D'accord, encore une fois, j'enregistre tout cela ici dans ma collection car ensuite, un
‫peu plus tard, je
‫pourrai continuer et créer une documentation à partir
‫de toutes ces données de collection que nous avons ici.
‫Donc, mettez à
‫jour l'utilisateur, mettez celui-ci ici et celui-ci ici.
‫Parfait.
‫Ainsi, la mise à jour des utilisateurs fonctionne désormais
‫pour l'ensemble de nos trois ressources à l'aide de la fonction d'usine.
‫Et donc, allons de l'avant et ajoutons le
‫suivant, qui sera createOne.
‫Alors exportez, createOne.
‫Et encore, on passe dans le modèle.
‫Et à partir de là, nous créons une nouvelle fonction.
‫Et cela peut, encore
‫une fois, le copier du Tour ici.
‫D'accord.
‫Et donc, ce dont nous avons besoin ici, c'est seulement cette partie.
‫Donc modèle, et document.
‫Et ici, nous l'appelons à nouveau des données.
‫D'accord.
‫Et donc, c'est en fait ça.
‫C'est notre fonction d'usine.
‫Et donc, encore une fois, venons ici et remplaçons-le.
‫Donc usine. createOne, Tour.
‫Vous voyez donc que notre code dans
‫les contrôleurs est maintenant vraiment propre, n'est-ce pas ?
‫Mais en fait, nous ne pourrons pas remplacer toutes les
‫fonctions que nous avons ici par des usines, car sinon, nous n'aurions
‫même pas besoin de ce fichier
‫de contrôleur, n'est-ce pas ?
‫Nous pourrions alors simplement créer ces gestionnaires à la volée, en gros,
‫dans le fichier du routeur, n'est-ce pas ?
‫Et donc, nous pourrions essentiellement sauter toute
‫cette étape du fichier de contrôleur.
‫Mais encore une fois, nous en
‫avons toujours besoin parce que nous avons d'autres choses là-dedans.
‫Par exemple, ces méthodes ici pour
‫obtenir les statistiques de tournée, ou ce plan
‫mensuel, et oui.
‫Il est donc logique de conserver ce fichier, d'accord ?
‫Ensuite, pour les
‫utilisateurs, nous n'avons en fait pas besoin de createOne
‫car, pour créer de nouveaux
‫utilisateurs, nous avons déjà la fonction signUp,
‫et nous ne pouvons pas vraiment la remplacer par
‫une usine car elle est vraiment différente de celle générique.
‫D'accord?
‫Mais nous pouvons le faire dans le contrôleur de révision, d'accord ?
‫Donc, fondamentalement, nous voulons remplacer ce createReview.
‫Maintenant, vous voyez que, dans
‫celui-ci, nous avons également une étape supplémentaire.
‫Nous avons donc ce code qui
‫n'est pas non plus dans notre fonction générique createOne.
‫Et alors, comment pouvons-nous résoudre cela?
‫Eh bien, nous pouvons en fait
‫créer un middleware qui s'exécutera avant createReview, d'accord ?
‫Et donc, cela le rend également un peu plus découplé.
‫Donc, fondamentalement, ce code ici va alors être dans sa
‫propre fonction, et
‫vraiment découplé de createReview, car en fait,
‫il n'a pas grand-chose à voir
‫avec la création de la revue.
‫Il définit simplement des données, non ?
‫Et donc, appelons en fait ce tour d'ensemble et les identifiants d'utilisateur.
‫Alors demande, ah, la réponse est manquante.
‫D'accord?
‫Et tout ce que
‫nous allons faire ici est de définir ces identifiants sur le
‫corps, puis de passer directement au
‫middleware suivant, où l'examen est alors réellement créé.
‫Bien?
‫Donc, avant de
‫l'oublier, ajoutons en fait ce middleware.
‫Donc dans les parcours de révision, c'est ici en post.
‫Donc reviewController, setTourUserIds.
‫D'accord?
‫Donc encore une autre fonction middleware dans cette pile.
‫D'accord.
‫Quoi qu'il en soit, débarrassons-nous ensuite de ce que nous
‫avons ici car cela est
‫facilement remplaçable par notre fonction d'usine, une fois de plus.
‫Alors createOne, puis Review, et c'est tout.
‫D'accord.
‫Et juste pour tester si cela fonctionne
‫toujours, allons simplement de l'avant et créons une nouvelle critique sur Tour.
‫D'accord?
‫Et pour cela, nous avons besoin des identifiants de
‫tournée, alors disons également Get All Tours.
‫Et maintenant, nous obtenons que l'appartenance de l'utilisateur n'existe plus,
‫alors continuons simplement et reconnectons-nous.
‫Alors obtenez un nouveau jeton ici.
‫Et donc, nous y voilà, en tant qu'administrateur.
‫Alors maintenant, Get All Tours, c'est parti.
‫Choisissons simplement l'un d'entre eux.
‫Alors disons, The Forest Hiker.
‫Je pense que celui-ci a déjà quelques critiques, n'est-ce pas?
‫Oh non, ce n'est pas le cas.
‫Donc celui-ci est bon à essayer maintenant.
‫Et donc, créez une nouvelle critique en tournée.
‫N'oubliez pas que nous devons changer l'ID ici.
‫Et maintenant, nous pouvons
‫publier cette critique uniquement avec la note et la critique.
‫Mais je pense que cela
‫ne fonctionnera pas car nous sommes connectés en tant
‫qu'administrateur et seuls les utilisateurs réguliers peuvent publier des avis.
‫D'accord?
‫Très bien, alors continuons de le faire ici.
‫hallucinant.
‫Mais nous allons avoir cette erreur que je viens de dire.
‫Vous n'avez donc pas l'autorisation de jouer.
‫Et donc, nous devons
‫nous reconnecter, cette fois en tant qu'utilisateur différent.
‫Et jetons un coup d'œil à celui que nous avons, en fait.
‫Ah ok.
‫Utilisons donc simplement test.
‫Ou peut-être que test était celui avec le mauvais mot de passe.
‫Mais voyons.
‫Ah ouais.
‫Expérimentons donc avec testuser.
‫Et celui-ci fonctionne.
‫Et donc, en fait, nous pouvons continuer et supprimer cet autre parce
‫que j'ai en quelque sorte oublié son mot de passe.
‫D'accord.
‫Et dans ce cas, ce n'est pas un problème.
‫Nous pouvons simplement supprimer des utilisateurs à notre guise puisque
‫nous ne sommes qu'en développement.
‫D'accord?
‫Maintenant, nous devrions être en mesure d'ajouter cette critique.
‫Et en effet, nous y voilà.
‫Parfait.
‫Voilà qui conclut cette conférence.
‫Tout ce que nous devons
‫faire dans le prochain est ensuite de
‫créer les fonctions d'usine pour en obtenir un et obtenir tous les
‫documents d'une certaine ressource.