‫Sprecher: Lassen Sie uns nun die
‫Implementierung der verschachtelten Route verbessern, die wir in der letzten Vorlesung codiert haben.
‫Und
‫dafür werden wir eine spezielle erweiterte Express-Funktion verwenden.
‫Wie Sie sich erinnern,
‫haben wir im letzten Video eine einfache verschachtelte
‫Post-Route implementiert, also nur diese hier.
‫Rechts. Dies bedeutet, dass
‫die Bewertungsroute innerhalb der Tourroute liegt.
‫Und wieder, weil Bewertungen gewissermaßen zu Touren gehören.
‫Rechts?
‫Dies ist also im API-Design sehr üblich.
‫Das Problem bei dieser Implementierung ist, dass sie
‫natürlich etwas unordentlich ist.
‫Und das liegt daran, dass wir im Tourrouter eine Route zum
‫Erstellen einer Bewertung hinterlegt haben.
‫Ganz einfach, weil eine Route mit einer Slash-Tour beginnt.
‫Das ist also
‫etwas verwirrend, und was
‫auch verwirrend ist, ist, dass wir hier, auch
‫in unserer Testroute, etwas sehr Ähnliches haben.
‫Also im Grunde das hier.
‫Wenn wir also eine neue Überprüfung ohne die verschachtelte
‫Route erstellen, ist dieser Codeabschnitt hier tatsächlich genau derselbe
‫wie dieser. Rechts?
‫Abgesehen davon, dass dies etwas verwirrend
‫ist, haben wir also auch doppelten Code, den wir
‫an zwei separaten Stellen pflegen müssten, falls wir etwas ändern wollten.
‫Und das ist wiederum eine sehr schlechte Praxis.
‫Lassen Sie uns dies nun mit einer erweiterten
‫Express-Funktion namens mergeParams beheben.
‫Entfernen wir also zuerst diesen
‫Code hier, der nicht wirklich zum Tourrouter gehört.
‫Als nächstes werden wir den Testrouter tatsächlich
‫in diesen Tourrouter importieren.
‫Okay?
‫Im Moment importieren wir also den
‫Review-Controller, aber eigentlich wollen wir den Review-Router.
‫Also lasst uns dieses hier
‫loswerden, und eigentlich werde ich es ganz löschen.
‫Und jetzt der Review-Router.
‫Und okay.
‫Also, lassen Sie uns diesen Code tatsächlich holen und ihn hier
‫oben platzieren,
‫nur damit wir sehen, was wir
‫tun, denn wir werden tatsächlich hier
‫oben etwas neuen Code erstellen.
‫Also sagen wir hier
‫Router. verwenden.
‫Und so werden wir im Grunde sagen, dass
‫dieser Tourrouter den Review-Router
‫verwenden sollte, falls er jemals auf eine solche Route stößt.
‫Und Routen überprüfen.
‫Habe ich es Routen oder Router genannt?
‫Sollte Router heißen.
‫Okay?
‫Denken Sie also daran, dass ein Router selbst
‫eigentlich nur eine Middleware ist.
‫Und so können wir die use-Methode darauf verwenden
‫und dann sagen, dass wir für
‫diese spezielle Route hier stattdessen den Review-Router verwenden möchten.
‫Okay?
‫Und so ist dies eigentlich wieder die Montage eines Routers.
‫Also, wenn du dir das anschaust, hier in
‫der App. js,
‫genau das haben wir getan.
‫Also haben wir es gemacht. verwenden,
‫dann die URL und
‫dann den Router.
‫Und hier ist
‫das, was wir tun, genau dasselbe.
‫Das ist also der Tourrouter, und so sagen wir
‫gut, wenn Sie eine URL wie diese finden,
‫dann verwenden Sie einfach den Review-Router.
‫Und so, wenn wir jetzt eine URL wie diese
‫haben, wird sie damit beginnen, dass sie hier in den Tourrouter
‫gelangt, okay, weil sie wieder mit Slash-Touren
‫beginnt,
‫okay, also im Grunde wird sie in
‫den Tourrouter umgeleitet, dann, wenn es
‫den Tourrouter erreicht, wird diese
‫URL hier abgeglichen und dann wieder in den Review-Router umgeleitet.
‫Und so haben
‫wir den Tourrouter und den
‫Reviewrouter schön voneinander getrennt und entkoppelt.
‫Aber jetzt fehlt tatsächlich noch ein
‫Stück, weil dieser Review-Router hier
‫gerade keinen Zugriff auf diesen Tour-ID-Parameter bekommt, okay.
‫Und so müssen wir jetzt
‫dem Review-Router auch hier den Zugriff auf diesen Parameter ermöglichen.
‫Kommen wir nun zum Review-Router, okay.
‫Hier kommen also die eingangs
‫erwähnten medizinischen mergeParams
‫ins Spiel.
‫Also hier, im Express. Router-Funktion können wir
‫einige Optionen angeben, und hier
‫müssen wir nur mergeParams auf true
‫setzen.
‫Und das ist es.
‫Aber wozu brauchen wir das hier eigentlich?
‫Nun, es liegt daran,
‫dass jeder Router standardmäßig nur
‫Zugriff auf die Parameter seiner spezifischen Routen hat, richtig.
‫Aber hier, in dieser Route, also in dieser URL für diesen
‫Beitrag, gibt es natürlich tatsächlich keine Tour-ID.
‫Aber wir möchten immer noch Zugriff auf
‫die Tour-ID erhalten, die sich in diesem anderen Router befand, richtig.
‫Also das hier.
‫Um Zugriff auf diesen Parameter in diesem
‫anderen Router
‫zu erhalten, müssen wir die Parameter physisch zusammenführen, okay.
‫Und das ist es, was mergeParams, auf true gesetzt, macht.
‫Und jetzt, egal ob wir eine Route wie diese bekommen,
‫kopieren wir sie einfach hierher. Auch hier
‫ist es einfacher, sie mit einem Beispiel zu visualisieren.
‫Also noch einmal, egal ob wir eine Route wie diese
‫oder eine Route
‫wie diese bekommen, es wird jetzt alles in diesem Handler hier landen, okay.
‫Also am Ende im Grunde zu dieser Handler-Funktion.
‫Und das funktioniert wieder, weil alle
‫Routen, die hier mit diesem
‫Muster beginnen, genau in dieser Codezeile
‫hier auf diesen Router umgeleitet werden, okay.
‫Also haben wir hier auf den Review-Router umgeleitet
‫und dort wird es dann mit dieser genauen Route übereinstimmen,
‫okay.
‫Und dank Merge-Parametern
‫erhalten wir dann Zugriff auf diese
‫ID, die tatsächlich vom anderen Router zuvor stammt.
‫Groß.
‫Also lass uns hier einfach
‫ein bisschen aufräumen, wirklich
‫das hier loswerden,
‫und
‫lass es uns jetzt schnell ausprobieren.
‫Also werde ich hier eine neue Rezension erstellen
‫und diesmal ein anderes Tool ausprobieren.
‫Also der Stadtwanderer.
‫Und alles, was wir
‫tun müssen, ist diese ID hier in der URL zu ändern, richtig.
‫Also, die Wertung wird drei
‫sein,
‫und dann war es irgendwie okay.
‫In Ordnung, und so wird diese Überprüfung weiterhin mit
‫Jonas durchgeführt, also von diesem Konto aus,
‫okay, denn das
‫ist immer noch einer, der in diesem Moment eingeloggt ist, okay.
‫Also, senden wir
‫das, und tatsächlich erhalten wir hier die Tour, die wir gerade angegeben haben,
‫und immer noch derselbe Benutzer.
‫Das ist wieder nur um sicherzugehen, dass die Tour überprüft wird, um zu
‫sehen, ob sie jetzt diese Bewertung bekommt
‫und ja, sie hat es getan.
‫Und so funktioniert dieser Merge-Parameter-Trick, den wir gerade
‫implementiert haben, tatsächlich gut
‫und wie beabsichtigt.
‫Um dies jetzt noch besser in Aktion zu
‫sehen, werden wir die Henry-Funktion anpassen,
‫um alle Bewertungen für eine bestimmte Tour direkt im nächsten
‫Video zu erhalten.