‫Kursleiter: Lassen Sie uns nun die Ergebnissortierung implementieren.
‫Damit unsere Benutzer die Ergebnisse nach einem bestimmten
‫Feld sortieren können.
‫Sehen wir uns nun alle unsere Ergebnisse hier vorerst an.
‫In Ordnung, und nehmen wir an, dass wir
‫diese Ergebnisse tatsächlich sortieren möchten, beispielsweise nach dem Preis.
‫Okay, also beginnen Sie mit dem niedrigsten Preis und steigen
‫Sie dann bis zum höchsten Preis auf.
‫Alles klar, wir haben also alle möglichen Preise.
‫397, 497, 1197, 1497, 997.
‫Wir haben sogar fast 3.000 hier.
‫Dann 1497 und so sind sie nicht wirklich in Ordnung, und
‫lassen Sie uns dem Benutzer erlauben, diese Ergebnisse im Wesentlichen basierend auf einem Feld
‫zu sortieren, das mit der Abfragezeichenfolge übergeben werden kann.
‫Nehmen wir an, wir möchten nach Preis sortieren.
‫Gut.
‫Wenn wir das also jetzt ausführen, passiert natürlich
‫nichts, es werden immer noch genau
‫die gleichen neun Ergebnisse und in der gleichen Reihenfolge angezeigt, da wir
‫zuvor in der letzten Vorlesung im Wesentlichen dieses Sortierfeld herausgefiltert haben.
‫Rechts?
‫Und so lassen Sie uns jetzt tatsächlich weitermachen und es verwenden.
‫Gut?
‫Erinnern Sie sich also hier daran, wie wir das Abfrageobjekt
‫erstellt und dann das Sortierfeld hier ausgeschlossen
‫haben, damit es unsere Filterung nicht verunreinigt hat, richtig?
‫Aber jetzt brauchen wir es tatsächlich und deshalb verwenden wir es jetzt.
‫Die dritte Funktion hier ist also das Sortieren.
‫Oder eigentlich, das ist
‫der zweite, also nennen wir diesen einfach 1A und 1B.
‫Gut?
‫Nehmen wir also an, dass sort req, wenn es tatsächlich eine
‫Sortierung gibt. Anfrage. Sortieren.
‫Okay, und du siehst es hier unten.
‫Jetzt ist es wegen diesem Fehler hier aber trotzdem weg.
‫Von unserer letzten Anfrage
‫bekamen wir natürlich ein Abfrageobjekt hier
‫und da hatten wir die sort-Eigenschaft, in Ordnung?
‫Und wenn es eine sort-Eigenschaft
‫gibt, bedeutet dies,
‫dass wir die Ergebnisse tatsächlich nach dem Wert sortieren möchten.
‫Eine schnelle Sache, die wir jetzt
‫tun müssen, ist, diese Abfrage der Variablen
‫hier von einer Konstanten in eine normale Variable zu ändern.
‫Also lass, okay?
‫Denn jetzt wollen wir eigentlich etwas mit
‫dieser Abfrage verketten.
‫Die neue Abfrage lautet also query. Sortieren.
‫Und wir wollen es nach req sortieren. Anfrage. Sortieren.
‫In Ordnung, denn das ist der Wert des Feldes, also
‫in diesem Fall der Preis,
‫und Mongoose sortiert das Ergebnis dann automatisch
‫nach dem Preis.
‫Und falls Sie sich jetzt fragen,
‫warum das so funktioniert, warum wir das hier gemacht haben, erinnern
‫Sie sich einfach daran, worüber wir in den letzten Vorträgen gesprochen haben.
‫Denken Sie also daran, wie diese Tour. find here
‫wird eine Abfrage zurückgeben, oder?
‫Und so haben wir dieses Abfrageobjekt hier
‫in dieser Variablen gespeichert, damit
‫wir später weitere Methoden daran verketten können.
‫Also mehr dieser Methoden, die für
‫alle Dokumente verfügbar sind, die über die Abfrageklasse erstellt wurden.
‫Okay, erinnerst du dich daran?
‫Ich glaube, darüber haben wir vor zwei Vorträgen ausführlich gesprochen.
‫Falls euch das also immer noch etwas verwirrend ist,
‫dann geht einfach
‫dorthin zurück oder schaut euch auch die Dokumentation an, in Ordnung?
‫Lassen Sie uns das jetzt tatsächlich testen.
‫Die Sortierung ist also immer noch auf den Preis eingestellt.
‫Also schicke ich es jetzt.
‫Schauen wir uns das Ergebnis an.
‫Und zwar starten wir mit dem niedrigsten Preis, aber
‫ich glaube, den hatten wir schon früher.
‫Wir beginnen also mit 397, dann 497, dann 997, 1197, 1497,
‫und Sie sehen, dass die Preise tatsächlich weiter steigen.
‫Also 1997, 2997.
‫Und so ja, in der Tat, sie sind jetzt sortiert.
‫Okay?
‫Also haben wir sie aufsteigend nach dem Preis sortiert.
‫Wir können sie aber auch absteigend sortieren.
‫Das ist ganz einfach.
‫Alles, was wir tun müssen, ist hier als Minus zu setzen.
‫Minuspreis und Mongoose werden sie dann automatisch in
‫die andere Reihenfolge sortieren.
‫Also in absteigender Reihenfolge.
‫Lassen Sie uns das also auch testen.
‫Und so sollten wir jetzt mit, ja genau,
‫mit diesem beginnen.
‫Der erste ist jetzt
‫der höchste und der letzte ist der 397er.
‫Cool.
‫Aber wir können tatsächlich noch einen Schritt weiter gehen,
‫denn wir haben hier viele Koffer, die den gleichen Preis haben.
‫Aber wie werden diese Ergebnisse mit dem gleichen
‫Preis dann darin geordnet?
‫Nehmen wir an, wir haben dieses mit diesem Preis
‫und dann dieses mit dem gleichen Preis.
‫Warum erscheint dieser vor dem zweiten?
‫Das gleiche mit diesem hier vielleicht,
‫oh eigentlich nicht.
‫Dieser ist also der einzige mit 1997.
‫Aber dann haben wir hier wieder diese beiden zum gleichen Preis.
‫Wir haben, okay, sie sind alle unterschiedlich.
‫Okay, das sind alle unterschiedlich.
‫Aber wir wollen sie im Grunde
‫nach einem zweiten Kriterium einordnen.
‫Falls es also einen Gleichstand gibt, möchten
‫wir ein zweites Feld haben,
‫nach dem wir dann sortieren können, wo das erste gleich ist.
‫Also in diesem Fall der Preis.
‫Bei Mongoose ist das ganz einfach, und
‫das zeige ich dir hier zum Beispiel als Kommentar.
‫In Mongoose würden wir also einfach Sortieren sagen
‫und jetzt haben wir den Preis, also haben wir
‫es einfach so,
‫aber dann müssen wir in
‫Mongoose nur noch einen weiteren Feldnamen zum String hinzufügen.
‫Also zum Beispiel Bewertungsdurchschnitt.
‫Oder ich denke, es sind Bewertungen.
‫Okay, und so wollen wir dieses Feld nun auch hier an unsere
‫Sorte weitergeben.
‫Okay?
‫Jetzt können wir hier in der URL kein Leerzeichen
‫lassen und fügen stattdessen ein Komma hinzu.
‫Okay?
‫Wir wollen also zuerst nach
‫Preis und dann als zweites Kriterium auch nach Bewertungsdurchschnitt sortieren.
‫Okay?
‫Also müssen wir
‫jetzt nur noch dieses Komma hier durch ein Leerzeichen ersetzen.
‫Gut?
‫Und natürlich könnten wir noch
‫mehr Felder haben, nach denen wir sortieren.
‫Okay?
‫Aber lassen wir es
‫vorerst so und implementieren es ganz schnell in unseren Code.
‫Gut?
‫Und lassen Sie mich hier eine neue Variable erstellen.
‫Nennen wir es Sortieren nach.
‫Und so haben wir req. Anfrage. sortieren und was wir
‫jetzt tun werden, ist, es durch das Komma zu trennen.
‫Teilen Sie also den String durch das Komma auf, und so wird
‫dann ein Array aller Strings
‫zurückgegeben, also aller
‫Feldnamen, und dann müssen wir ihn nur noch
‫mit Join zusammenfügen, und als Join-String verwenden wir ein Leerzeichen.
‫Gut?
‫Und nur um sicherzustellen, dass es richtig ist.
‫Konsole. log, sortieren nach, und dann
‫wollen wir hier natürlich diese sortieren-nach-Variable verwenden.
‫Okay?
‫Schauen wir uns das also an.
‫Und.
‫Also 4. 7 hier und der andere hat auch 4. 7, in Ordnung?
‫Lassen Sie uns also weitermachen und unsere API verwenden,
‫um diesen Bewertungsdurchschnitt hier zu ändern.
‫Okay?
‫Also nur als Spaßexperiment,
‫lasst uns diese ID hier kopieren, dann die Tour aktualisieren, und so
‫kommen wir hier zum Körper, und deshalb möchte
‫ich den Bewertungsdurchschnitt auf 4 aktualisieren. 9.
‫Okay?
‫Lassen Sie uns das senden, und tatsächlich sehen Sie, dass es aktualisiert wurde.
‫Und so ändern wir das jetzt noch einmal,
‫oder versuchen wir es tatsächlich noch einmal.
‫Und jetzt sehen Sie, dass der erste noch 4 hat. 7 und dieser
‫hier hat jetzt 4. 9.
‫Und so werden sie nun mit aufsteigender Wertung geordnet.
‫Rechts?
‫Und natürlich könnten wir hier ein Minus
‫setzen und dann sollten sie die Position wechseln,
‫also die mit 4. 9 sollte zuerst erscheinen.
‫Versuchen wir das auch.
‫Und ja, tatsächlich.
‫Jetzt ist diese Tour für Sportliebhaber
‫diejenige, die zuerst erscheint.
‫Alles klar, großartig.
‫Es sieht also so aus, als ob es funktioniert.
‫Schauen wir uns hier unsere Ergebnisse an.
‫Und ja, tatsächlich.
‫Und schauen wir uns einfach an, was wir hier an
‫der Konsole protokolliert haben.
‫Also, ja, das ist unsere Sortierung nach Variable, die ja.
‫Welche Art von sieht ähnlich aus wie das, was wir hier haben.
‫Und das war das Ziel, diese Variable zu erstellen.
‫Super, das funktioniert jetzt.
‫Lassen Sie uns diese Konsole und auch diese hier loswerden.
‫Und alles klar.
‫Und um hier
‫fertig zu werden, fügen wir tatsächlich einen Standard hinzu.
‫Und das tun wir, indem wir hier einfach einen else-Block hinzufügen.
‫Falls der Benutzer also kein Sortierfeld
‫in der URL-Abfragezeichenfolge angibt, fügen wir der
‫Abfrage dennoch eine Sortierung hinzu.
‫Also abfragen. sortieren und wir werden
‫dann nach dem erstellten Add-Feld sortieren, in Ordnung?
‫Und zwar in absteigender
‫Reihenfolge, damit die neuesten zuerst erscheinen.
‫Also Minus bei erstellt.
‫Gut?
‫Geben Sie dies ab.
‫Also ja, ich denke so, wir sind fertig.
‫Lassen Sie uns diese Option auch hier einfach deaktivieren.
‫Und so sind wir jetzt einfach wieder bei unserer
‫regulären URL ohne Abfragezeichenfolgen.
‫Und so schauen wir
‫mal, ob dies nun tatsächlich vom Angelegten bestellt wird.
‫Dieser hier endet also in 59 Sekunden und 30.
‫5930 auch.
‫Und ja.
‫Sie wurden also alle im selben
‫Moment erstellt, weil wir sie alle gleichzeitig importiert haben.
‫Gut?
‫In diesem Fall können wir die Wirkung
‫dieses Codestücks, das wir hier gerade hinzugefügt haben,
‫nicht wirklich sehen, aber falls diese Dokumente zu
‫unterschiedlichen Zeitpunkten hinzugefügt wurden, würden
‫sie jetzt nach dem Datum ihrer Erstellung geordnet.
‫Gut?
‫Das war's also zum Sortieren.
‫Als nächstes werden wir über die Begrenzung der Felder sprechen, die wir
‫in unseren Ergebnissen haben wollen.