‫Instructeur : Dans
‫cette vidéo, nous allons donc continuer à implémenter la ressource d'avis
‫et cette fois en implémentant un point
‫de terminaison pour obtenir tous les avis et également pour créer de nouveaux avis.
‫Et donc à ce stade, nous ne faisons que passer en revue des
‫choses que nous avons déjà apprises auparavant dans les sections précédentes.
‫Et donc dans cette vidéo, j'ai un autre défi pour vous.
‫Donc, fondamentalement, je veux que vous implémentiez ces deux points de terminaison,
‫donc un point de terminaison pour
‫obtenir tous les avis et un point de terminaison pour créer vous-même de nouveaux avis.
‫D'accord?
‫Créez donc le fichier
‫du contrôleur, puis créez-y les fonctions du
‫contrôleur, puis créez également les routes dans votre fichier de révision des routes.
‫Et puis à la fin du cours, créez de nouveaux avis
‫et récupérez-les également de la base de données
‫en utilisant obtenir tous les avis.
‫D'accord.
‫Alors s'il vous plaît, mettez la vidéo en pause maintenant et mettez-vous au travail.
‫D'accord.
‫Et maintenant, c'est à mon tour d'implémenter cela, et
‫je commence par les fonctions du contrôleur.
‫Donc, ici, nous
‫créons Review Controller dot js,
‫puis nous commençons bien sûr par demander la révision.
‫Donc, montez d'un niveau, puis modèles, puis passez en revue le modèle.
‫Alors obtenez tous les avis, et nous utilisons
‫toujours le même nom.
‫Droit?
‫Ensuite, nous savons déjà
‫que cela va être une fonction asynchrone car nous
‫allons traiter ici
‫de la base de données, et nous devons également encapsuler toute
‫cette fonction dans le catch Async.
‫Alors attrapez Async, je pense que c'est comme ça que ça s'appelle.
‫Exiger.
‫D'accord.
‫Et maintenant, récupérons simplement toutes les critiques à l'aide de
‫wait, puis une simple recherche sans aucun filtre.
‫Un état de 200, puis renvoyer au JSON normal.
‫Statut de réussite.
‫Nous définissons également la
‫propriété de résultat avec la longueur des points de
‫révision, et bien sûr, puis les données elles-mêmes.
‫Donnez-lui une sauvegarde ici et maintenant sur le suivant.
‫Alors créez Review.
‫D'accord.
‫Et vous commencez à voir
‫ici que nous construisons en fait beaucoup de code en double.
‫Donc, tout cela ici ressemble fondamentalement
‫exactement à ce qu'il semble pour les utilisateurs et
‫pour les visites.
‫Droit?
‫Et en fait, nous allons résoudre ce
‫problème un peu plus tard dans la section.
‫Mais pour l'instant, je veux vraiment que ça marche.
‫D'accord?
‫Donc, pour l'instant, ne vous inquiétez pas d'écrire tout ce code
‫qui ressemble à un doublon.
‫D'accord.
‫Nous appelons donc cela ici new
‫Review, puis, comme toujours, nous utilisons dot create avec toutes les
‫données provenant du corps.
‫D'accord?
‫Et donc, encore une fois, s'il y a des champs sur
‫le corps qui ne sont pas
‫dans le schéma de révision, ils seront simplement ignorés.
‫Et c'est pourquoi il est
‫sûr de le faire simplement comme
‫ça lors de la création d'une nouvelle ressource.
‫D'accord?
‫Quoi qu'il en soit, renvoyons-le maintenant au client comme toujours.
‫Donc, avec un statut de 201
‫pour créé, et review devrait être la
‫nouvelle Review.
‫D'accord.
‫En fait, sans les deux points, le point-virgule, et oui.
‫Ce sont tous des contrôleurs.
‫Passons maintenant au parcours.
‫Alors, passez
‫en revue Routes dot js.
‫Et ici bien
‫sûr, nous commençons par exiger notre contrôleur,
‫puis vers les contrôleurs et
‫revoir Controller dot js.
‫Ensuite, nous devons créer notre routeur.
‫Donc express, et bien sûr, nous devons également
‫importer express ici.
‫Faisons-le donc avant de faire quoi que ce soit d'autre.
‫Express.
‫Donc dot Router, et je pense que c'est ainsi que cela fonctionne.
‫Et maintenant,
‫router et définir notre
‫itinéraire et c'est encore une fois l'itinéraire des critiques.
‫D'accord.
‫Parce que rappelez-vous comment, à l'étape
‫suivante, nous allons réellement
‫monter ce routeur sur les revues de barre oblique d'API.
‫D'accord?
‫Donc, tout comme nous l'avons fait avec les visites et les utilisateurs.
‫Et en fait, faisons-le avant de faire quoi que ce soit d'autre.
‫D'accord?
‫Donc juste pour enlever cette confusion
‫que vous pourriez avoir.
‫Alors, exportons le routeur à partir d'ici.
‫D'accord?
‫Et maintenant, nous pouvons passer à
‫l'application dot js.
‫Et puis bien sûr importer notre routeur ici.
‫Et
‫exiger, revoir les itinéraires.
‫D'accord?
‫Et maintenant, nous descendons ici
‫et montons ce routeur sur un nouveau chemin.
‫Et ce chemin sera comme je
‫l'ai dit API slash V1 slash
‫reviews.
‫D'accord.
‫Et donc encore une fois,
‫ce routeur que nous spécifions maintenant est essentiellement un
‫middleware que nous montons sur ce chemin.
‫D'accord?
‫Donc, chaque fois qu'il y
‫a une demande avec une URL qui commence comme
‫ceci, cette fonction middleware ici
‫sera essentiellement appelée.
‫Et donc c'est
‫alors notre routeur et là juste
‫la route slash, donc juste la
‫racine sera alors essentiellement cette revue API V1.
‫D'accord?
‫Donc, tout comme nous l'avons fait avant nous les deux autres ressources.
‫Donc la tournée Model, ce n'est pas là que nous travaillions.
‫Nous travaillions dans la revue Routes.
‫D'accord.
‫Nous avons donc spécifié un itinéraire.
‫Précisons maintenant la méthode pour laquelle
‫nous spécifions notre fonction.
‫Nous avons donc obtenu, et
‫pour cela,
‫nous avons utilisé ou nous avons réécrit la
‫critique.
‫Et puis nous avons aussi un
‫post pour créer Review.
‫D'accord?
‫Donnez-lui une sauvegarde.
‫Et en fait, nous voulons que seuls les
‫utilisateurs authentifiés puissent publier des avis.
‫Et aussi uniquement les utilisateurs qui sont en fait des utilisateurs réguliers.
‫Donc pas des administrateurs et pas non plus des guides touristiques.
‫D'accord?
‫Alors, comment pouvons-nous mettre cela en œuvre?
‫Rappelons notre section authentification.
‫Nous commençons donc par exiger notre auth Controller.
‫Encore une fois, les contrôleurs et auth Controller.
‫Et maintenant, tout ce que
‫nous avons à faire est d'utiliser les fonctions
‫middleware que nous avons spécifiées ici.
‫Rappelles toi.
‫Donc d'abord, nous utilisons le middleware protect, donc auth Controller dot
‫protect et cela fera
‫en sorte
‫que nous protégeons cette route pour qu'elle
‫ne soit accessible qu'aux utilisateurs qui sont authentifiés.
‫Droit?
‫Et puis, à
‫l'étape suivante, nous disons que nous
‫voulons restreindre cette route, nous utilisons donc notre
‫middleware restrict To aux seuls utilisateurs ayant le rôle d'utilisateur.
‫D'accord?
‫Encore une fois, nous l'avons fait ici plusieurs fois.
‫Et donc, pas vraiment quelque chose de nouveau à ce stade.
‫D'accord.
‫Donc je pense que nous avons suivi toutes les étapes.
‫Donc tout d'abord, nous avons un modèle qui va nous permettre
‫de créer de nouveaux documents.
‫Ensuite, nos fonctions de contrôleur sont
‫définies dans notre contrôleur pour obtenir tous les avis
‫et créer des avis.
‫Ensuite, nous avons utilisé ces fonctions de contrôleur
‫ou fonctions de
‫gestionnaire, comme vous pouvez également
‫les appeler, pour créer de nouvelles routes.
‫D'accord?
‫Nous avons donc créé un itinéraire pour obtenir des
‫avis et pour publier des avis.
‫Et tout comme avant,
‫nous l'avons fait essentiellement dans une mini sous-application
‫qui est juste pour les critiques.
‫Et c'est pourquoi nous avons créé notre
‫nouveau routeur que nous avons ensuite importé dans notre
‫application principale et l'avons monté sur cette url où nous
‫voulons accéder à tout ce qui concerne les avis.
‫D'accord?
‫Alors, allons-y maintenant et testons cela.
‫Je vais donc aller de
‫l'avant, copier ceci et créer un nouvel onglet
‫ici et
‫voici donc les
‫critiques et bien sûr la publication.
‫D'accord.
‫Alors, que devons-nous réellement spécifier pour
‫publier un nouvel avis ?
‫Nous avons donc besoin de l'examen lui-même.
‫Rappelles toi.
‫Alors disons "visite incroyable", puis
‫la note et
‫je vais lui en donner
‫cinq ici, puis la visite et l'ID utilisateur.
‫D'accord?
‫Et maintenant, nous devons obtenir l'identifiant de l'une des tournées.
‫D'accord?
‫Et donc utilisons le premier vrai
‫tour ici, disons, alors utilisons cet explorateur des mers.
‫D'accord?
‫Ainsi,
‫l'identifiant de l'explorateur marin et
‫maintenant nous avons bien sûr
‫également besoin de l'identifiant de l'utilisateur qui publie l'avis.
‫Et nous pouvons obtenir cela
‫ici à partir de tous les utilisateurs.
‫Et donc en fait, nous n'avons qu'un seul utilisateur
‫qui est un utilisateur régulier.
‫Donc ce Jonas ici et donc obtenons cette pièce d'identité.
‫D'accord?
‫Gardez maintenant à l'esprit
‫que cet utilisateur doit être connecté.
‫D'accord?
‫Et donc un peu
‫plus tard, nous obtiendrons automatiquement l'ID utilisateur de
‫l'utilisateur déjà connecté.
‫N'oubliez pas que nous pouvons le faire car le middleware
‫de protection placera l'utilisateur sur l'objet de demande.
‫Vous vous en souvenez ?
‫Mais pour l'instant, je voulais rester simple
‫ici, et donc
‫avec l'implémentation actuelle, nous devons également fournir l'ID de l'utilisateur.
‫D'accord?
‫Mais nous devons toujours nous connecter en tant qu'utilisateur
‫régulier car nous avons protégé cet itinéraire.
‫Vous vous en souvenez ?
‫Alors fermons-en quelques-uns.
‫D'accord?
‫Et connectez-vous ici.
‫Et nous le faisons comme, alors quel bonjour point Jonas à IO
‫alors bonjour.
‫Et son mot de passe est probablement et j'espère qu'il
‫est toujours le même.
‫Et en fait, ce n'est pas le cas, essayons un nouveau mot de passe car je
‫me souviens que j'ai utilisé celui-là lorsque nous avons changé les mots de passe.
‫Cela ne fonctionne toujours pas, et créons donc
‫un nouvel utilisateur.
‫D'accord?
‫Bien sûr, nous pourrions réinitialiser le mot de passe à ce stade, mais c'est
‫un peu trop de travail
‫et je vais donc simplement créer un nouvel utilisateur
‫pour que ce soit plus facile juste pour le tester maintenant.
‫D'accord?
‫Alors utilisons test à Jonas dot IO et
‫le nom ici sera test user.
‫D'accord.
‫Oh, et nous avons déjà cette adresse e-mail dans notre base de données
‫et c'est étrange.
‫Nous avons l'utilisateur.
‫Peut-être que non, nous ne l'avons pas mis à jour correctement.
‫Oh, mais c'est peut-être un utilisateur supprimé.
‫Donc un utilisateur qui n'est plus actif et
‫ne se présente donc pas ici.
‫Jetons donc un coup d'œil à cela dans la boussole.
‫Et bien sûr, lorsque vous êtes
‫en mode développement, vous rencontrerez tout le temps ce genre de problèmes.
‫Alors ici, testez Jonas, et comme je le disais, c'est
‫en fait l'un de ces utilisateurs supprimés.
‫Donc actif défini sur false.
‫Essayons donc à nouveau.
‫Alors testez l'utilisateur ici simplement aussi.
‫Alors envoyez-le maintenant et maintenant nous sommes connectés.
‫Et maintenant, je copie l'ID de ce nouvel utilisateur pour
‫créer cette nouvelle critique.
‫D'accord?
‫Envoyons-le maintenant, et
‫bien sûr, nous obtenons l'erreur vous n'êtes pas connecté
‫car nous n'avons en fait
‫pas fourni notre jeton Web JSON.
‫Il faut donc arriver à l'autorisation puis au
‫jeton au porteur, et puis bien
‫sûr à celui-ci.
‫Donc, si nous essayons à nouveau
‫maintenant, alors nous y allons.
‫D'accord.
‫Créons-en un autre pour un autre
‫tour, cette fois pour,
‫pour
‫le prochain, donc pour Forrest Hiker.
‫Copiez donc l'ID ici aussi.
‫Oui.
‫Ici, l'utilisateur sera le même, mais une autre tournée.
‫Donnons-lui un quatre étoiles.
‫Et disons simplement " j'ai adoré. " Quelque chose de
‫très simple et
‫correct.
‫Sauvegardez ceci, et je
‫vais créer un nouveau dossier
‫ici pour les critiques et bien sûr,
‫quelque chose
‫s'est mal passé ici.
‫Alors où est ce dossier ?
‫Mm.
‫Ce n'est vraiment nulle part, alors créons-le ici.
‫Et nous pouvons également changer le nom ici.
‫Alors créez
‫un nouvel avis.
‫D'accord.
‫Et maintenant, nous voulons également obtenir tous les avis.
‫Nous n'avons donc plus besoin de ces deux-là.
‫D'accord et celui-ci est vraiment
‫un GET, et enregistrons-le également dans Reviews.
‫Obtenez tous les avis.
‫Et cela devrait donc suffire pour nous permettre de démarrer
‫et de vraiment voir toutes nos critiques.
‫D'accord, et c'est parti.
‫Jetons un coup d'œil à la boussole, et pour
‫voir les critiques ici, nous devons aller de
‫l'avant et recharger l'intégralité de la
‫base de données, mais maintenant, lorsque nous arrivons aux critiques ici,
‫nous voyons en effet nos deux critiques qui ont également été créées.
‫D'accord.
‫Maintenant, comment pouvons-nous faire en sorte
‫que nous voyions réellement l'utilisateur et les données de la tournée
‫ici au lieu de simplement les identifiants ?
‫Eh bien, bien sûr, nous devons à nouveau utiliser popup.
‫Droit?
‫Et c'est exactement ce que nous allons faire
‫dans la prochaine vidéo.