‫Kursleiter: Also haben
‫wir im letzten Video Benutzer in
‫Touren eingebettet und auch über
‫die Nachteile dieses Ansatzes in unserer speziellen Situation gesprochen.
‫Lassen Sie uns in diesem Video also
‫Touren und Benutzer nicht durch Einbetten, sondern durch eine Referenz verbinden.
‫Lassen Sie
‫uns also zunächst den Code loswerden, den wir in der letzten Vorlesung geschrieben haben.
‫Okay, also dieser hier,
‫der im Grunde für die Durchführung der Einbettung verantwortlich ist.
‫Und nun gehen wir hier zu unserem Guides-Feld.
‫Okay?
‫Diesmal in diesem
‫Video ist die Idee, dass Touren und Benutzer in
‫unserer Datenbank immer vollständig getrennte Einheiten bleiben.
‫Okay?
‫Alles, was wir auf einem bestimmten Tourdokument speichern,
‫sind also die IDs der Benutzer, die die Tourguides für
‫diese bestimmte Tour sind.
‫Wenn wir dann die Tour
‫abfragen, möchten wir automatisch Zugriff auf die Tourguides erhalten.
‫Aber auch hier, ohne dass sie
‫tatsächlich auf dem Tourdokument selbst gespeichert werden.
‫Und genau das ist Referenz.
‫So wie wir zu Beginn dieses Abschnitts besprochen haben.
‫Gut?
‫Lassen Sie mich
‫Ihnen nun zeigen, wie wir die Referenzierung mit Mongoose implementieren können.
‫Okay?
‫Hier in den Anleitungen wollen wir nun ein Array angeben.
‫Okay?
‫Also genau wie wir es zuvor mit den Standorten gemacht haben.
‫Und das bedeutet dann
‫wiederum, dass dies einige Unterdokumente sein werden.
‫Also eingebettete Dokumente.
‫Gut?
‫Und jetzt wird der Typ ein
‫neuer Typ sein, den wir noch nie zuvor gesehen haben.
‫Und das ist Mungo. Schema. Objekt Identifikation.
‫Okay?
‫Und das bedeutet, dass wir
‫erwarten, dass ein Typ
‫jedes der Elemente im Guides-Array eine MongoDB-ID ist.
‫Gut?
‫Und hier muss es tatsächlich ein großes O
‫sein, okay, sonst wird
‫es nicht funktionieren, und auch das alles hier muss innerhalb eines
‫Objekts sein, genau wie jede andere Schematypdefinition.
‫Okay, denn das ist wirklich alles.
‫Okay, der Typ ist also im Grunde diese MongoDB-ID, und dann müssen
‫wir jetzt auch noch die Referenz angeben.
‫Und hier passiert die Magie hinter den
‫Kulissen, denn hier sagen wir jetzt, dass die Referenz der Benutzer sein sollte.
‫Okay, und so stellen wir wirklich Referenzen
‫zwischen verschiedenen Datensätzen in Mongoose her.
‫Und dafür brauchen wir eigentlich
‫nicht einmal den Benutzer, der in dieses Dokument importiert werden soll.
‫Das hatten wir hier also tatsächlich, aber wir brauchen es nicht einmal.
‫Das hatten wir hier für den vorherigen
‫Vortrag, aber wir können
‫es auskommentieren, denn was wir gerade hier gemacht haben, wird immer noch funktionieren.
‫Okay?
‫Also, lass uns jetzt eine neue Tour erstellen und eigentlich werde ich
‫es genauso machen wie wir es vorher gemacht haben.
‫Also lass uns einfach weitermachen und diesen löschen.
‫Wo ist der Ausweis?
‫Auf geht's.
‫Also Tour löschen.
‫Dafür können wir unsere API bereits nutzen.
‫Alles klar, und jetzt erstellen wir eine neue Tour.
‫Und so wie
‫zuvor geben wir nur ein Array der IDs in die Leitfäden ein.
‫Gut?
‫Aber dieses Mal haben
‫wir tatsächlich angegeben, dass eine Objekt-ID genau das ist, was wir erwarten.
‫Rechts?
‫Dies hier ist also vom Typ Objekt-ID.
‫Aber hinter den Kulissen wird es auch auf den Benutzer verwiesen.
‫Gut?
‫Wenn wir diese Tour jetzt hier erstellen,
‫enthält sie also tatsächlich nur diese
‫IDs und nicht den Benutzer, der den IDs entspricht.
‫Schauen wir uns das also an.
‫Und so ja, los geht's.
‫Das sind also genau die Daten, die wir eingegeben haben.
‫Nur die Ausweise der Reiseleiter.
‫Okay, und genau das haben wir erwartet.
‫Denn im Moment haben wir nur
‫die Referenzen in Mongoose.
‫Und wir kümmern uns dann darum, dass die
‫Daten tatsächlich in unserer Ausgabe im nächsten Video angezeigt werden.
‫Okay, denn wir werden das auf zwei verschiedene Arten tun.
‫Schauen wir uns Compass auch ganz schnell
‫hier an, nur um das auch zu sehen, wo ist das, ja, hier.
‫Sie sehen also tatsächlich die Objekt-ID und
‫dann natürlich die IDs, die wir übergeben haben.
‫Also, wie wir es bei Touren und Benutzern erwartet hatten,
‫immer noch zwei völlig unterschiedliche Einheiten.
‫Und wie bereits erwähnt, kümmern wir uns
‫im nächsten Video dann darum, die Benutzerdaten
‫in der Ausgabe tatsächlich
‫anzuzeigen, indem wir einen Prozess namens Auffüllen verwenden.