‫Jonas : Nous avons donc
‫découvert le middleware de document et de requête, et
‫maintenant le dernier middleware dont nous allons parler est
‫le middleware d'agrégation, et comme
‫vous pouvez probablement le deviner,
‫le middleware d'agrégation nous permet d'ajouter des crochets avant ou
‫après une agrégation, et
‫ainsi de suite Continuons maintenant avec notre exemple précédent où nous avons
‫caché les visites secrètes des requêtes, maintenant dans une agrégation, les
‫visites secrètes sont toujours utilisées, n'est-ce pas ?
‫Alors confirmons rapidement qu'en fait,
‫par exemple ici dans nos statistiques de tournée, c'est donc
‫là que nous avons utilisé la première
‫agrégation et donc vous voyez que nous avons
‫quatre tournées ici, quatre en facile et trois
‫en moyen et donc ça fait 11 mais nous avons déjà
‫sachez que nous ne voulons en fait que 10 tournées.
‫Il y a donc 10 tournées qui
‫ne sont pas secrètes et une qui est secrète, et maintenant
‫nous obtenons toutes ces 11 tournées ici et donc
‫fondamentalement, nous voulons également exclure la tournée secrète de l'agrégation.
‫Alors comment pourrions-nous faire cela?
‫Eh bien, jetons un coup d'œil
‫à l'endroit où notre agrégation se produit réellement, donc c'est ici, oui, donc dans les
‫étapes de la tournée, et donc ce que nous pourrions faire ici, dans
‫cet état de correspondance, exclure simplement les tournées secrètes qui
‫sont vraies, n'est-ce pas ?
‫Ce serait donc assez facile à
‫ajouter ici, mais nous devrions ensuite
‫ajouter la même chose ici dans l'autre agrégation
‫que nous avons, et si nous avions
‫encore plus d'agrégations, nous devrions alors ajouter cela dans
‫chacun d'eux et c'est bien sûr pas
‫une bonne idée, car par exemple nous pourrions oublier de
‫le faire et c'est aussi juste du code répétitif et donc excluons-le simplement au
‫niveau du modèle, d'accord donc ajoutons un middleware d'agrégation ici en commençant
‫par un commentaire.
‫Donc middleware d'agrégation et comme avant,
‫nous avons tourSchema. pre, nous voulons donc que cela se
‫produise avant que l'agrégation ne
‫soit réellement exécutée et nous utilisons donc ici le hook d'agrégation.
‫D'accord, puis notre fonction qui accepte à
‫nouveau la fonction suivante, appelant ainsi le prochain middleware.
‫D'accord, commençons donc par jeter un œil à ceci, alors
‫rappelez-vous qu'ici dans le middleware de requête, cet objet
‫pointe vers la requête actuelle.
‫Ensuite, ici, dans le middleware de document, cet
‫objet pointe vers le
‫document actuel, et donc ici, dans le middleware
‫d'agrégation, cela va pointer vers l'objet d'agrégation actuel.
‫D'accord, jetons un coup d'œil à cela dans
‫la console, mais avant cela, permettez-moi de supprimer ce journal ici.
‫D'accord, sauvegardez-le, exécutez cette agrégation ici et cela prend beaucoup
‫de temps, alors annulons-le et revenons en arrière et
‫c'est probablement parce que nous n'appelons pas
‫ensuite ici, et donc comme nous le savons déjà, nous sommes bloqués
‫dans la fonction middleware
‫et donc ce n'est pas bon.
‫Alors essayons à nouveau maintenant, envoyez, et
‫oui, alors maintenant nous sommes de retour et
‫regardons maintenant l'objet d'agrégation.
‫D'accord, il y a beaucoup
‫de choses ici, donc ce n'est pas vraiment intéressant ici et
‫je ne peux pas vraiment trouver ce que j'essaie de
‫vous montrer ici et ajoutons simplement ceci. pipeline d'accord parce que ce que
‫je voulais vraiment vous montrer, c'est juste l'objet pipeline.
‫D'accord, et en fait c'est un pipeline comme celui-ci donc c'est
‫en fait une fonction, une méthode.
‫Alors clarifions la console ici.
‫Essayez à nouveau, et nous obtenons donc ici le pipeline d'agrégation, et c'est
‫donc simplement le tableau que nous avons transmis
‫à la fonction d'agrégation auparavant.
‫Bon, alors jetons un coup d'œil et
‫nous avons donc ici ce tableau, celui-ci pas celui-ci.
‫Nous avons donc le match
‫à grouper puis le tri donc si nous jetons un
‫coup d'œil ici à la console nous avons bien notre match avec la
‫moyenne des notes que nous avons du groupe puis trions.
‫C'est donc exactement le pipeline que nous avons spécifié auparavant, et
‫donc maintenant, afin de filtrer les visites secrètes, tout ce que
‫nous avons à faire est d'ajouter une autre étape de
‫correspondance juste au début de ce tableau
‫de pipeline, à droite et alors faisons exactement cela.
‫Faisons-le ici avant ce
‫journal, donc ceci. pipeline et rappelez-vous qu'il s'agit d'un tableau et
‫comment ajouter un élément au début d'un
‫tableau ?
‫Nous utilisons unshift et c'est donc une méthode JavaScript standard
‫pour les tableaux d'accord, nous avons également shift à ajouter à la
‫fin du tableau et unshift au début du tableau, et
‫donc encore une fois ce que nous voulons ajouter ici
‫maintenant est d'ajouter juste une autre étape, si semblable à ce que
‫nous avons ici-bas.
‫Donc match et ensuite secretTour, pas égal à vrai.
‫Faites une sauvegarde, et donc ce morceau de code ici est exactement ce
‫que nous avons ici, n'est-ce pas ?
‫Supprimer de la sortie tous les documents
‫pour lesquels secretTour est défini sur true, n'est-ce pas ?
‫Donc, si vous faites une sauvegarde maintenant, alors vérifions cela, et rappelez-vous que nous
‫avons maintenant 11 tournées, quatre, quatre et trois, alors
‫vérifions le résultat après et donc maintenant, en effet, l'une
‫des vôtres difficiles est partie, donc nous ne faisons que
‫maintenant avons trois circuits difficiles, ce qui signifie que
‫nous n'en avons plus que 10.
‫D'accord et en fait, nous pouvons confirmer que notre tournée
‫super secrète était une tournée difficile, d'accord et c'est maintenant terminé
‫et nos résultats ne concernent plus
‫que les tournées non secrètes régulières, d'accord ?
‫Et nous pouvons à nouveau jeter un œil à notre pipeline d'agrégation
‫maintenant et ici, vous voyez que nous avons maintenant ces deux étapes correspondantes.
‫Génial et comme je l'ai mentionné précédemment,
‫répéter ces étapes ne pose aucun problème, nous pouvons avoir autant
‫d'étapes de match que nous le souhaitons, d'accord et c'est tout pour le middleware d'agrégation.
‫Je ne vais pas inclure de code postal ici pour un middleware qui
‫n'est pas vraiment nécessaire d'accord, et je ne vais
‫pas non plus parler de middleware modèle ici parce
‫que ce n'est vraiment pas si important.
‫D'accord, donc le middleware est un truc vraiment cool et
‫important que nous pouvons ajouter à nos modèles, et il y
‫a en effet d'autres trucs sympas que
‫nous pouvons faire avec les modèles, par exemple implémenter
‫des méthodes d'instance qui sont des méthodes qui seront disponibles
‫sur tous les documents après avoir été interrogé,
‫et cela peut encore être très pratique,
‫et nous le ferons plus
‫tard dans la section d'authentification, d'accord.
‫Donc je vais laisser ça un peu plus
‫tard, maintenant ce que nous allons faire
‫dans cette section juste pour finir est d'ajouter en fait une validation, d'accord et
‫donc dans les deux prochaines vidéos, nous allons en parler.