‫Kursleiter: In Ordnung, und jetzt, um diesen Teil abzuschließen,
‫lassen Sie uns einige Fabriken erstellen, um Dokumente zu erhalten.
‫Und fangen wir hier mit getOne an, okay?
‫Exporte. getOne, aber dieses ist tatsächlich etwas kniffliger,
‫und das liegt daran, dass wir
‫im getTour-Handler eine Bevölkerung haben.
‫Schauen wir uns das also an.
‫Also, genau hier, in dieser haben wir diese hier, die
‫sich von allen anderen Get-Handlern
‫in den anderen Ressourcen unterscheidet, richtig?
‫Aber gut, das ist
‫nicht wirklich ein Problem, weil wir uns
‫einfach erlauben, ein Optionsobjekt zum Auffüllen in unsere getOne-Funktion zu übergeben, okay?
‫Anstatt das Modell einfach zu
‫übergeben, werden wir auch auffüllen, also Optionen, in Ordnung.
‫Von hier aus geben wir dann
‫die normale Handlerfunktion zurück.
‫Also, lass uns das alles noch einmal kopieren,
‫in Ordnung.
‫Das brauchen wir hier also nicht.
‫Dann heißt es hier
‫wie immer Modell und hier Doc.
‫Nun, eigentlich hier, Dokument,
‫und hier noch einmal Daten gleich doc.
‫Nun müssen wir wegen dieses Auffüllens
‫auch hier einige Änderungen vornehmen. Im
‫Grunde erstellen wir also zuerst die Abfrage und
‫dann, wenn es das Auffülloptionsobjekt gibt, fügen wir es
‫dann der Abfrage
‫hinzu und dann durch das Ende, warte auf diese Abfrage, okay?
‫Sinn ergeben?
‫Übersetzen wir also, was ich gerade gesagt habe.
‫Die Abfrage ist also einfach gleich Model. findById, so,
‫oder?
‫Wenn es dann ein Optionsobjekt zum Auffüllen gibt,
‫dann
‫ist die Abfrage
‫in diesem Fall eine Abfrage. mit den Optionen zum Auffüllen auffüllen, okay?
‫Und dann warten wir endlich auf unsere Abfrage und
‫speichern sie im Dokument.
‫Also, warten Sie einfach so auf eine Abfrage, in Ordnung.
‫Und so ist es tatsächlich.
‫Also diese Logik, die
‫wir hier haben, die Abfrage nicht sofort abzuwarten, sondern
‫sie einfach in einer Variablen zu speichern,
‫damit wir sie dann im nächsten Schritt manipulieren können.
‫Wir haben diese Art von Dingen tatsächlich
‫schon früher gemacht, als wir unsere API-Funktionen entwickelt haben, oder?
‫Erst am Ende, wenn die gesamte Abfrage fertig ist,
‫werden wir sie dann abwarten und irgendwo in einer Variablen speichern.
‫Nun, lass uns fortfahren und dieses wirklich überall verwenden, beginnend
‫natürlich mit der Tour.
‫getTour wird nun werkseitig
‫sein. getOne,
‫und übergeben Sie das Tour-
‫und Popup-Options-Objekt, erinnern Sie sich daran?
‫Was wir also tun werden, ist Weg und Bewertungen zu sagen.
‫Denken Sie also daran, dass die Pfadeigenschaft im Grunde das
‫Feld ist, das wir
‫ausfüllen möchten, und dann können wir auch select
‫angeben. Denken Sie also an dieses, wo
‫wir angeben, welches der Felder wir tatsächlich erhalten möchten, richtig?
‫Aber in
‫diesem Fall haben wir nichts
‫davon, also belassen wir es einfach so.
‫Und jetzt können wir tatsächlich fortfahren und all dies löschen.
‫So großartig.
‫Und um sicher zu gehen, lassen Sie uns das schnell testen.
‫Wir werden also eine bestimmte Tour machen,
‫und tatsächlich funktioniert es immer noch.
‫Mal sehen, ob dieser einige Bewertungen hat.
‫Oh ja, das tut es tatsächlich,
‫und Sie sehen, dass der Bevölkerungsprozess auch noch funktioniert.
‫Also, das war erfolgreich, würde ich sagen.
‫Lassen Sie uns dieses getOne nun auch in
‫allen anderen Ressourcen verwenden.
‫Also, der Benutzercontroller hier, wo wir ihn haben, mal sehen, wo
‫er ist, ah, hier unten.
‫Sagen wir Fabrik. getOne, aber
‫nur mit dem Benutzermodell und
‫kein Optionsobjekt auffüllen.
‫Okay, und da wir hier
‫sind, ändern wir hier eigentlich nur die Fehlermeldung
‫für create user,
‫also ist diese Route nicht definiert, wird es nie sein,
‫und verwenden Sie stattdessen bitte die Anmeldung.
‫Als nächstes und
‫schließlich das gleiche für die Bewertungen im Grunde.
‫Also Exporte. getReview ist
‫gleich ab Werk. getOne-Rezension, und
‫ich glaube, wir haben (murmelt) unsere Routen noch nicht.
‫Und das tun wir in der Tat nicht, also fügen Sie dies hier ganz
‫schnell hinzu, reviewController. GetReview, okay?
‫Testen wir auch noch schnell dieses
‫hier, nur weil ich es dann auch hier
‫zu Postman hinzufügen möchte, okay?
‫Also einfach dieses kopieren, weil es ähnlich ist, und dann
‫ist es tatsächlich get.
‫Und ja, funktioniert einwandfrei, speichere es hier in Bewertungen und hol dir
‫eine Bewertung ab.
‫Alles klar,
‫jetzt fehlt nur noch eine getAll-Factory-Funktion, oder?
‫Also,
‫um dieses getAllTours zu ersetzen, getAllUsers,
‫das wir hier auch irgendwo haben sollten,
‫also getAllUsers, und auch getAllReviews, also kopieren
‫wir es hier noch einmal vom
‫Tour-Controller, denn eigentlich ist dies
‫die wirklich vollständige, weil sie alles hat
‫diese API-Funktionen, und so erhalten nach dem
‫Erstellen unserer getAll-Factory-Funktion alle drei Ressourcen diese API-Funktionen.
‫Also wieder alles kopieren,
‫exportieren. getAll,
‫und jetzt müssen wir diese API-Funktionen hier
‫tatsächlich benötigen,
‫und tatsächlich können wir sie von hier entfernen,
‫weil wir sie nicht mehr
‫benötigen, weil wir dies jetzt an die Handler-Factory übertragen, oder?
‫Jetzt müssen wir hier nur noch wie immer
‫durch model ersetzen und dann
‫hier doc und data.
‫Nun gut, perfekt.
‫Mal sehen,
‫ob das funktioniert, getAll with Tour.
‫Und jetzt möchte ich wirklich sehen, ob
‫dies mit all diesen Funktionen noch
‫funktioniert, und so ist es hier, getAll
‫Tours, und so fügen
‫wir unseren Abfragestring hier hinzu und sagen wir Dauer größer oder
‫gleich als sagen wir 10, und sortieren nach Preis.
‫Okay, und so erhalten wir hier zwei Ergebnisse.
‫Okay, es funktioniert nicht.
‫Wie auch immer, wir erhalten hier die beiden (kichern) Ergebnisse,
‫und sie haben beide eine Dauer von
‫mehr als 10, und der
‫Preis beträgt 1497 und der zweite ist höher, okay?
‫Lassen Sie es uns hier auf sieben setzen,
‫damit wir etwas mehr Ergebnisse erhalten.
‫Okay, und jetzt bekommen wir fünf.
‫Okay, machen wir jetzt dasselbe für die Bewertungen, denn ich
‫freue mich sehr darauf, diese API-Funktionen auch in
‫den Bewertungen zu testen.
‫Ein Problem, das wir
‫hier haben, ist, dass dieser Route-Handler tatsächlich diese
‫beiden Codezeilen hat, die alle anderen getAll-Handler nicht haben, okay?
‫Aber was wir hier tun werden, ist, diesen Code
‫einfach auch in unsere Handler-Factory zu kopieren, okay?
‫Das ist irgendwie
‫ein Hack, weil wir diesen wirklich nur für getAll-Reviews brauchen,
‫aber das zu umgehen wäre hier in dieser
‫Situation etwas zu viel Arbeit, und ich möchte es
‫hier einfach nur einfach halten, in Ordnung.
‫Also, lass
‫uns das hier kopieren, und ich füge hier einen
‫Kommentar hinzu, um verschachtelte getReviews on Tour zu ermöglichen, okay?
‫Und so diesen Filter, wir geben ihn dann auch hier rein, okay?
‫Also wieder, das ist ein kleiner
‫Hack, aber ich werde
‫es hier so belassen, weil ich es für vernünftig halte, in Ordnung.
‫Wie auch immer, lass uns das jetzt
‫loswerden, also Fabrik. GetAll und Überprüfung, OK?
‫Lassen Sie uns das hier neben all den anderen ablegen.
‫Und jetzt,
‫wie Sie sehen, brauchen wir dieses catchAsync hier eigentlich nicht mehr,
‫also werde ich es hier
‫auskommentieren, denn wer weiß, vielleicht brauchen wir es
‫in Zukunft für eine andere Middleware-Funktion hier, alle rechts.
‫Das sieht also schön
‫und sauber aus, und testen wir jetzt die getAll-Rezensionen.
‫In Ordnung, also speichern wir auch hier die Änderungen.
‫Diese brauchen wir
‫nicht, aber ich möchte eigentlich alle Bewertungen bekommen.
‫Im Moment haben wir also
‫vier Bewertungen, und versuchen wir nun, nur
‫nach Bewertungen mit einer Bewertung von beispielsweise vier zu filtern.
‫Also Abfragestring, Bewertung gleich vier.
‫Oh, und es funktioniert tatsächlich,
‫so schön, das ist wirklich schön.
‫So erhalten wir einfach Zugriff auf all diese API-Funktionen
‫wie Filtern, Sortieren, Paginieren und all die guten Dinge, die wir vor
‫langer Zeit im Kurs implementiert
‫haben (kichert), oder?
‫Und ich möchte
‫auch sicherstellen, dass dieses getAll reviews on Tour auch noch funktioniert.
‫Lassen Sie uns das also
‫überprüfen, und ja, Sie sehen, dass es tatsächlich so ist.
‫Die Tour-ID, die wir hier
‫haben, ist also genau die richtige hier und genau hier.
‫Also, das funktioniert auch
‫noch, und so verwenden wir
‫endlich auch getAll für den Benutzer-Controller, in Ordnung.
‫Also im Grunde einfach das
‫ersetzen, also ab Werk. getAll-Benutzer, alles klar.
‫Und lasst uns dieses
‫hier in die Nähe der anderen stellen, in Ordnung.
‫Und dann auch noch dieses,
‫also im Grunde alle diese von
‫Fabrikfunktionen zusammen generiert
‫und dann alle anderen einfach darüber.
‫Okay, machen wir das gleiche hier, dieser ist
‫schon schön und sauber, und
‫das gleiche für den Tour-Controller, also was haben
‫wir noch hier?
‫Diesen können wir loswerden,
‫und, okay, ich finde, er sieht so gut aus.
‫Auch hier können wir dieses Stück Code auskommentieren,
‫da wir es zumindest im Moment nicht mehr benötigen.
‫Also, um es hier noch einmal mit den Benutzern zu testen,
‫lassen Sie uns alle
‫zusammenbringen, und tatsächlich sind sie hier.
‫Wir können jetzt auch sagen,
‫dass wir nur die mit der
‫Rolle des Benutzers wollen, und das funktioniert auch.
‫Großartig, und damit ist dieser Teil der Erstellung von
‫Handler-Factory-Funktionen eigentlich abgeschlossen, und dies war
‫wirklich ein großer Fortschritt in unserem Projekt. Denken Sie also
‫daran, dass wir
‫etwas später auch eine Buchungsressource erstellen werden,
‫und Sie sehen, dass wir wahrscheinlich Wir werden
‫in der Lage sein, die Haupt-API für
‫diese Buchungen in etwa fünf
‫Sekunden oder so zu erstellen, einfach mit diesen fünf Fabrikfunktionen, in Ordnung.
‫Wie auch immer, gute Arbeit, tolle Arbeit, und
‫wir sehen uns im nächsten.