‫Instructeur : remplissons maintenant les avis avec
‫les données de l'utilisateur et de la visite.
‫Donc, tout comme l'a fait lors de la
‫visite, faisons en sorte que la visite et l'utilisateur
‫soient automatiquement renseignés chaque fois qu'il y a une requête pour un avis.
‫Comme nous l'avons déjà fait auparavant, je
‫vais maintenant vous lancer un autre défi, d'accord.
‫Je veux donc que vous alliez de l'avant
‫et que vous le fassiez comme nous l'avons fait lors des tournées, mais maintenant pour les critiques.
‫Juste un indice que je
‫dois vous donner avant que vous ne puissiez
‫le faire vous-même, c'est que lorsque vous voulez
‫remplir deux champs, vous devez en fait appeler deux fois.
‫Donc une fois pour chacun des champs, d'accord.
‫Avec ces informations, vous devriez être prêt
‫à mettre la vidéo en pause maintenant et à l'essayer.
‫J'espère donc que ce n'était pas trop dur.
‫Allons de l'avant et fermons simplement quelques fichiers ici, donc
‫tout ce qui n'est pas lié aux critiques, nous n'en
‫avons plus besoin.
‫Passons donc au modèle de révision, puis implémentons
‫ou pré-trouverons un middleware.
‫Nous le faisons donc sur le schéma, comme
‫vous le savez déjà, puis nous utilisons à nouveau une
‫expression régulière pour faire correspondre les chaînes, qui commencent par find.
‫Encore une fois, cela va fonctionner pour find,
‫pour find one, et toutes les autres méthodes find one qui
‫sont disponibles dans Mongoose.
‫Comme toujours, je commence par écrire ensuite.
‫Et maintenant, tout ce que nous avons
‫à faire est d'appeler populate sur la requête actuelle, donc ceci. remplir, et je vais maintenant
‫spécifier l'objet d'options car je veux seulement sélectionner
‫quelques champs et non l'intégralité de la
‫visite, et pas non plus l'utilisateur entier.
‫Alors rappelez-vous, nous commençons par la propriété path, et
‫celle-ci va être pour la tournée.
‫Encore une fois, en spécifiant tour ici, cela signifie que ce champ
‫ici, qui porte le nom exact, sera
‫alors celui qui sera rempli sur la base
‫d'un modèle de tour.
‫Eh bien, parce que c'est ce que nous avons spécifié ici, d'accord.
‫Donc, la référence est à un modèle appelé
‫tour, et en gros c'est dans cette collection où
‫Mongoose va ensuite chercher des documents avec l'ID que nous avons spécifié.
‫D'accord, donc nous voulons une tournée, mais disons que nous ne voulons
‫en fait que le nom de la
‫tournée et rien d'autre.
‫Alors sélectionnez, d'accord, puis juste le nom, puis comme je l'ai dit, si
‫nous voulons remplir plusieurs champs, tout ce que nous avons
‫à faire est d'appeler à nouveau populate.
‫Donc, à ce stade, la requête est remplie avec les visites, et maintenant
‫nous devons la remplir à nouveau,
‫cette fois avec l'utilisateur.
‫Et maintenant, sélectionnez, et
‫cela n'affiche en fait que le nom d'utilisateur et la photo, et
‫pas par exemple, des éléments comme l'e-mail.
‫Supposons donc que
‫quelqu'un accède à l'API pour obtenir tous les
‫avis, mais nous ne voulons pas divulguer tous
‫les détails sur les utilisateurs qui publient ces avis au client.
‫Donc, personne ne devrait vraiment être en mesure
‫de connaître les données privées des évaluateurs, comme les e-mails, d'accord.
‫Donc, encore une fois, nous ne faisons que fuiter, nous n'envoyons que des données pertinentes
‫sur l'utilisateur, et dans ce cas, c'est le nom et la photo, d'accord.
‫Donc, enregistrez-le, et si nous atteignons ou obtenons maintenant
‫tous les points de terminaison des avis,
‫alors déjà la visite et l'utilisateur devraient être renseignés au lieu
‫de simplement voir les identifiants là-bas.
‫Essayons ça, et c'est parti.
‫Donc ça marche, nous obtenons le nom,
‫et bien sûr aussi l'ID, et ensuite la même chose pour l'utilisateur.
‫On obtient donc le nom, mais pas la photo.
‫Voyons donc, peut-être que je n'ai pas compris la propriété de
‫la photo, alors jetons un coup d'œil à cela.
‫Donc le userModel, mais en fait il est là.
‫Non, je suis désolé, bien sûr, nous ne voyons pas la photo car
‫nous n'avons jamais spécifié de photo pour aucun de nos utilisateurs.
‫D'accord, et donc la seule propriété qui existe réellement est le
‫nom, et c'est donc ce que nous obtenons.
‫D'accord, et c'est en fait tout.
‫Très simple, c'est tout ce que nous devons faire pour obtenir
‫toutes les données associées,
‫et exactement comme nous l'avons spécifié dans notre modèle de données.
‫Encore une fois, gardez
‫à l'esprit que celui-ci va ajouter des requêtes
‫supplémentaires, et dans ce cas, il s'agit
‫en fait de deux requêtes, car dans
‫les coulisses, Mongoose devra en fait interroger à la fois les visites
‫et les utilisateurs afin de trouver le document correspondant, d'accord.
‫Cela devrait
‫donc probablement ajouter du temps à la requête.
‫Cela a donc pris 266 millisecondes, comme ça.
‫Pour expérimenter, commentons ce
‫code, puis réessayez.
‫Et cela prend beaucoup de temps, je ne sais pas pourquoi.
‫Alors faisons-le à nouveau, et donc vous voyez, 157
‫millisecondes, et si nous le remettons maintenant, recommencez.
‫Et encore une fois, cela prend beaucoup
‫de temps, et encore une fois, je le fais deux fois.
‫Mais vous voyez toujours que cela a pris un peu plus de temps, d'accord.
‫Donc pas la fin
‫du monde, c'était juste 100 millisecondes de plus, mais
‫quand vous atteignez une certaine
‫échelle, cela pourrait faire une différence.
‫Donc encore une fois, je veux juste que vous gardiez cela à l'esprit.
‫Quoi qu'il en soit, c'est tout pour cette conférence, alors passons maintenant.