‫Kursleiter: Lassen Sie uns nun die Bewertungen sowohl
‫mit den Benutzer- als auch mit den Tourdaten füllen.
‫Also, genau wie bei der Tour, lassen Sie uns
‫jetzt so machen, dass sowohl die Tour als auch der
‫Benutzer jedes Mal automatisch ausgefüllt werden, wenn eine Abfrage für eine Überprüfung erfolgt.
‫Da wir das schon früher gemacht haben,
‫gebe ich dir jetzt noch eine weitere Herausforderung, okay.
‫Ich möchte, dass Sie es genauso
‫machen wie wir es bei den Touren getan haben, aber jetzt zu den Bewertungen.
‫Ich muss Ihnen nur
‫einen Hinweis geben, bevor Sie dies
‫selbst tun können: Wenn Sie zwei Felder
‫ausfüllen möchten, müssen Sie populate tatsächlich zweimal aufrufen.
‫Also einmal für jedes der Felder, in Ordnung.
‫Mit diesen Informationen sollten Sie
‫das Video jetzt anhalten und es ausprobieren.
‫Also ich hoffe das war nicht zu schwer.
‫Lassen Sie uns hier einfach einige Dateien schließen, damit
‫wir alles, was nicht mit Bewertungen zu tun hat,
‫nicht mehr benötigen.
‫Lassen Sie uns also einfach zum Überprüfungsmodell gehen und dann
‫Middleware implementieren oder vorab finden.
‫Also machen wir das auf dem Schema,
‫wie Sie bereits wissen, und verwenden dann wieder einen regulären
‫Ausdruck, um im Grunde Strings abzugleichen, die mit find beginnen.
‫Dies wird also wieder für find, für
‫find one und alle anderen find one-Methoden funktionieren, die in
‫Mongoose verfügbar sind.
‫Wie immer beginne ich mit dem Schreiben als nächstes.
‫Und jetzt müssen wir nur
‫noch populate für die aktuelle Abfrage aufrufen. auffüllen, und ich werde jetzt
‫tatsächlich das Optionsobjekt angeben, weil ich nur ein
‫paar Felder auswählen möchte und nicht die gesamte
‫Tour und auch nicht den gesamten Benutzer.
‫Denken Sie also daran, dass wir mit der Pfadeigenschaft beginnen, und
‫diese wird für die Tour bestimmt sein.
‫Die Angabe von Tour hier bedeutet also wiederum, dass dieses Feld
‫hier, das den genauen Namen hat,
‫dann dasjenige ist, das basierend auf einem
‫Tourmodell gefüllt wird.
‫Nun, denn das haben wir hier angegeben, okay.
‫Die Referenz bezieht sich also auf ein Modell namens
‫tour, und im Grunde befindet es sich in dieser Sammlung,
‫in der Mongoose dann nach Dokumenten mit der von uns angegebenen ID sucht.
‫Okay, wir wollen also eine Tour, aber sagen wir dann,
‫wir wollen eigentlich nur den Tournamen
‫und sonst nichts.
‫Wählen Sie also, okay, und dann nur den Namen, und dann,
‫wie gesagt, wenn wir mehrere Felder ausfüllen möchten,
‫müssen wir nur noch populate aufrufen.
‫An diesem Punkt ist die Abfrage also mit den Touren gefüllt, und
‫jetzt müssen wir sie erneut auffüllen,
‫diesmal mit dem Benutzer.
‫Und jetzt auswählen, und
‫das wird eigentlich nur den Benutzernamen und das Foto anzeigen
‫und nicht zum Beispiel die E-Mail.
‫Angenommen, jemand ruft
‫die API auf, um alle Bewertungen
‫abzurufen, aber wir möchten nicht alle Details über
‫die Benutzer preisgeben, die diese Bewertungen an den Client senden.
‫Also sollte niemand die privaten Daten
‫der Rezensenten, wie E-Mails, wirklich erfahren können, okay.
‫Also, wir lecken nur, wir senden nur relevante Daten über den Benutzer, und
‫in diesem Fall sind es der Name und das Foto, okay.
‫Speichern Sie dies also, und wenn wir jetzt den
‫Endpunkt aller Bewertungen treffen oder abrufen, dann
‫sollten bereits die Tour und der Benutzer ausgefüllt sein, anstatt nur
‫die IDs dort zu sehen.
‫Versuchen wir es und los geht's.
‫Also das funktioniert, wir bekommen den Namen
‫und natürlich auch die ID und dann das gleiche für den Benutzer.
‫So bekommen wir den Namen, aber dann nicht das Foto.
‫Mal sehen, vielleicht habe ich es nicht geschafft, die photo-Eigenschaft
‫anzugeben, also schauen wir uns das an.
‫Also das userModel, aber eigentlich ist es da.
‫Nein, tut mir leid, natürlich sehen wir das Foto nicht, da
‫wir für keinen unserer Benutzer ein Foto angegeben haben.
‫Okay, und daher ist die einzige Eigenschaft, die tatsächlich existiert,
‫der Name, und den erhalten wir dann.
‫Okay, und das ist es tatsächlich.
‫So ganz einfach, das ist alles, was wir tun müssen, um
‫alle zugehörigen Daten zu erhalten,
‫und zwar genau so, wie wir es in unserem Datenmodell festgelegt haben.
‫Denken Sie noch
‫einmal daran, dass diese Abfrage einige zusätzliche Abfragen
‫hinzufügen wird, und in diesem Fall
‫sind es tatsächlich zwei Abfragen, da
‫Mongoose hinter den Kulissen tatsächlich sowohl die Touren als auch die
‫Benutzer abfragen muss, um zu finden das passende Dokument, ok.
‫Das sollte also
‫hier wohl etwas Zeit in die Abfrage einbringen.
‫Es dauerte also 266 Millisekunden.
‫Kommentieren wir diesen Code einfach zu Experimentierzwecken aus
‫und versuchen Sie es dann erneut.
‫Und das dauert viel Zeit, ich weiß nicht warum.
‫Machen wir es noch einmal, und Sie sehen, 157 Millisekunden, und
‫wenn wir es jetzt zurücksetzen, machen wir es noch einmal.
‫Und wieder dauert es viel
‫Zeit, und deshalb mache ich es wieder zweimal.
‫Aber du siehst trotzdem, dass es etwas länger gedauert hat, okay.
‫Also nicht das Ende
‫der Welt, es waren nur 100 Millisekunden mehr, aber
‫wenn man einen bestimmten Maßstab
‫erreicht, kann das einen Unterschied machen.
‫Ich möchte nur, dass Sie das noch einmal im Hinterkopf behalten.
‫Wie auch immer, das war's für diesen Vortrag, also lasst uns jetzt weitermachen.