‫Instructeur : Implémentons maintenant le tri des résultats.
‫Afin de permettre à nos utilisateurs de trier les résultats
‫en fonction d'un certain champ.
‫Alors, jetons maintenant un œil à tous nos résultats ici pour le moment.
‫Très bien, et disons que nous voulons
‫en fait trier ces résultats, disons par prix.
‫D'accord, donc en commençant par le prix le plus bas, puis
‫en remontant jusqu'au prix le plus élevé.
‫Très bien, nous avons donc toutes sortes de prix.
‫397, 497, 1197, 1497, 997.
‫Nous en avons même près de 3000 ici.
‫Puis 1497 et donc ils ne sont pas vraiment en ordre,
‫et permettons donc à l'utilisateur de trier ces résultats en fonction d'un champ qui peut
‫être transmis à l'aide de la chaîne de requête.
‫Disons donc que nous voulons trier par prix.
‫D'accord.
‫Donc, si nous l'exécutons maintenant, bien sûr, rien
‫ne se passera, il affichera toujours
‫exactement les mêmes neuf résultats et dans le même ordre, car auparavant, lors
‫de la dernière conférence, nous avons essentiellement filtré ce champ de tri.
‫Droit?
‫Et donc maintenant, allons-y et utilisons-le.
‫D'accord?
‫Alors, rappelez-vous ici comment nous avons créé l'objet de requête,
‫puis exclu le champ de tri ici,
‫afin qu'il ne pollue pas notre filtrage, n'est-ce pas ?
‫Mais maintenant, nous en avons réellement besoin et utilisons-le maintenant.
‫Ainsi, la troisième fonctionnalité ici est le tri.
‫Ou en fait,
‫c'est le deuxième, alors appelons celui-ci 1A et 1B.
‫D'accord?
‫Donc, disons que s'il y a réellement un tri, sort
‫req. mettre en doute. sorte.
‫D'accord, et vous le voyez ici.
‫Maintenant, c'est parti à cause de cette erreur ici, mais de toute façon.
‫De notre dernière requête, nous
‫avons, bien sûr, un objet de requête ici
‫et donc là-dedans nous avions la propriété sort, d'accord ?
‫Et s'il existe une propriété de tri,
‫eh bien, cela signifie
‫que nous voulons réellement trier les résultats en fonction de la valeur.
‫Maintenant, une chose rapide que
‫nous devons faire est de changer cette
‫requête de variable ici d'une constante à une variable normale.
‫Alors laissez, d'accord?
‫Parce que maintenant nous voulons enchaîner quelque
‫chose à cette requête.
‫Ainsi, la nouvelle requête sera requête. sorte.
‫Et nous voulons le trier par req. mettre en doute. sorte.
‫D'accord, car ce sera la valeur du champ, donc dans
‫ce cas le prix, et
‫Mongoose triera alors automatiquement le résultat en
‫fonction du prix.
‫Et maintenant, au cas où vous vous
‫demanderiez pourquoi cela fonctionne de cette façon, alors pourquoi nous avons fait
‫cela ici, rappelez-vous simplement de quoi nous avons parlé au cours des dernières conférences.
‫Alors, rappelez-vous comment cette tournée. find here va
‫renvoyer une requête, n'est-ce pas ?
‫Et donc nous avons stocké cet objet de requête
‫ici dans cette variable, afin que nous
‫puissions plus tard continuer à lui enchaîner plus de méthodes.
‫Donc plus de ces méthodes qui sont
‫disponibles sur tous les documents créés via la classe de requête.
‫D'accord, tu te souviens de ça ?
‫Je pense que nous en avons parlé en profondeur il y a deux conférences.
‫Donc, au cas où cela vous semble encore un peu
‫confus, alors retournez-y
‫ou vous pouvez également jeter un œil à la documentation, d'accord ?
‫Maintenant, testons cela.
‫Donc, le tri est toujours fixé au prix.
‫Je vais donc l'envoyer maintenant.
‫Jetons un œil au résultat.
‫Et effectivement on commence avec le prix le plus bas,
‫mais je pense qu'on avait déjà ça avant.
‫Nous commençons donc par 397, puis 497, puis 997, 1197,
‫1497, et vous voyez que les prix continuent d'augmenter.
‫Donc 1997, 2997.
‫Et donc oui, effectivement, ils sont maintenant triés.
‫D'accord?
‫Nous les avons donc triés par prix dans un ordre croissant.
‫Mais on peut aussi les trier par ordre décroissant.
‫C'est très simple.
‫Tout ce que nous avons à faire est de définir le moins ici.
‫Ainsi, moins le prix et Mongoose les triera alors
‫automatiquement dans l'autre ordre.
‫Donc, dans l'ordre décroissant.
‫Alors testons celui-là aussi.
‫Et maintenant, nous devrions commencer par, ouais
‫exactement, avec celui-ci.
‫Ainsi, le premier est
‫maintenant le plus élevé et le dernier est le 397.
‫Frais.
‫Mais nous pouvons en fait aller plus loin, car
‫nous avons ici de nombreux cas qui ont le même prix.
‫Mais comment ces résultats avec le même prix sont-ils ensuite
‫ordonnés en leur sein ?
‫Alors disons que nous avons celui-ci avec ce prix
‫et puis celui-ci avec le même prix.
‫Alors pourquoi celui-ci apparaît-il avant le second ?
‫La même chose avec celui-ci ici peut-être,
‫oh en fait pas.
‫Donc celui-ci est juste le seul avec 1997.
‫Mais là encore, nous avons ces deux avec le même prix.
‫Nous avons, d'accord, ils sont tous différents.
‫D'accord, ils sont tous différents.
‫Mais nous voulons les classer, fondamentalement,
‫selon un deuxième critère.
‫Donc, en cas d'égalité, nous voulons avoir
‫un deuxième champ par lequel
‫nous pouvons ensuite trier où le premier est le même.
‫Donc dans ce cas le prix.
‫Donc, dans Mongoose, c'est assez facile, et permettez-moi
‫de vous le montrer ici en tant que commentaire par exemple.
‫Donc, dans Mongoose, nous dirions simplement trier et nous
‫avons maintenant le prix, nous l'avons donc comme ceci, mais
‫dans Mongoose, tout
‫ce que nous avons à faire
‫est d'ajouter un autre nom de champ à la chaîne.
‫Ainsi, par exemple, la note moyenne.
‫Ou je pense que ce sont les notes.
‫D'accord, et nous voulons maintenant transmettre ce champ ici aussi à
‫notre tri.
‫D'accord?
‫Maintenant, nous ne pouvons pas laisser d'espace ici dans l'URL et
‫nous allons donc ajouter une virgule à la place.
‫D'accord?
‫Nous voulons donc trier d'abord
‫par prix, puis comme deuxième critère, également par notes moyennes.
‫D'accord?
‫Et maintenant, tout ce
‫que nous avons à faire est de remplacer cette virgule ici par un espace.
‫D'accord?
‫Et bien sûr, nous pourrions avoir
‫encore plus de champs selon lesquels nous trier.
‫D'accord?
‫Mais pour l'instant, laissons
‫cela comme ça et implémentons-le très rapidement dans notre code.
‫D'accord?
‫Et en fait, permettez-moi de créer une nouvelle variable ici.
‫Appelons ça trier par.
‫Et donc nous avons req. mettre en doute. trier et ce que
‫nous allons faire est maintenant de le séparer par la virgule.
‫Donc, divisez la chaîne par la virgule, et cela renverra alors un tableau de
‫toutes les chaînes, donc tous les noms
‫de champ, puis
‫tout ce que nous avons à faire est de le
‫reconstituer en utilisant join, et comme chaîne de jointure nous utilisons un espace.
‫D'accord?
‫Et donc juste pour s'assurer que c'est correct.
‫Console. log, trier par, puis bien sûr,
‫ici, nous voulons utiliser ce tri par variable.
‫D'accord?
‫Jetons donc un œil à cela.
‫Et.
‫Donc 4. 7 ici, et l'autre en a également 4. 7, d'accord ?
‫Et donc allons de l'avant et utilisons notre API pour
‫modifier cette moyenne de notes ici.
‫D'accord?
‫Donc, juste à titre
‫d'expérience amusante, copions cet ID ici, puis mettons à jour la visite, et
‫venons-en au corps, et je veux donc mettre
‫à jour les notes moyennes à 4. 9.
‫D'accord?
‫Envoyons-le, et en effet, vous voyez qu'il a été mis à jour.
‫Et donc maintenant, changeons cela à nouveau,
‫ou essayons à nouveau en fait.
‫Et maintenant vous voyez que le premier en a encore 4. 7 et celui-ci
‫en a maintenant 4. 9.
‫Et donc ils sont maintenant classés avec une cote ascendante.
‫Droit?
‫Et bien sûr, nous pourrions mettre un
‫moins ici et alors ils devraient changer de position,
‫c'est-à-dire celui avec 4. 9 devrait apparaître en premier.
‫Essayons ça aussi.
‫Et oui, en effet.
‫Alors maintenant, celui-ci, la tournée des amoureux du
‫sport, est celui qui apparaît en premier.
‫Très bien, super.
‫Donc ça a l'air de fonctionner.
‫Jetons un coup d'œil à nos résultats ici.
‫Et oui, en effet.
‫Et jetons un coup d'œil à ce que nous avons
‫enregistré ici sur la console.
‫Et donc, oui, c'est notre tri par variable, qui oui.
‫Quel genre de ressemble à ce que nous avons ici.
‫Et c'était donc le but de la création de cette variable.
‫Super, donc ça marche maintenant.
‫Débarrassons-nous de cette console et de celle-ci aussi.
‫Et bien.
‫Et juste
‫pour finir ici, ajoutons en fait un par défaut.
‫Et nous le faisons en ajoutant simplement un bloc else ici.
‫Ainsi, si l'utilisateur ne spécifie aucun champ de tri
‫dans la chaîne de requête URL, nous allons quand
‫même ajouter un tri à la requête.
‫Alors interroge. trier et nous trierons
‫ensuite par le champ d'ajout créé, d'accord ?
‫Et en fait dans un ordre
‫décroissant, de sorte que les plus récents apparaissent en premier.
‫Donc moins créé à.
‫D'accord?
‫Faites une sauvegarde.
‫Et donc oui, je pense comme ça, nous avons terminé.
‫Désactivons simplement cette option ici aussi.
‫Et maintenant, nous revenons à notre URL habituelle sans
‫aucune chaîne de requête.
‫Et donc jetons un coup
‫d'œil si cela est maintenant réellement commandé par le créé à.
‫Donc celui-ci ici se termine en 59 secondes et 30.
‫5930 aussi.
‫Et ouais.
‫Ils ont donc tous été créés exactement
‫au même moment, car nous les avons tous importés en même temps.
‫D'accord?
‫Et donc dans ce cas, nous ne pouvons
‫pas vraiment voir l'effet de ce morceau de code
‫que nous venons d'ajouter ici, mais au cas où ces
‫documents auraient été ajoutés à des moments
‫différents, ils seraient désormais classés par date de création.
‫D'accord?
‫Voilà pour le tri.
‫Ensuite, nous allons parler de la limitation des champs que
‫nous voulons dans nos résultats.