‫Lehrer: Beginnen wir nun damit, Dokumente
‫zu erstellen, das Modell zu testen und Mongoose wirklich zu verwenden.
‫Und ich bin wirklich aufgeregt über
‫dieses Video, also lasst uns hier wirklich loslegen.
‫Wir werden also eine neue Variable erstellen, und ich
‫nenne sie testTour, und dies wird ein
‫neues Dokument sein, das aus
‫dem Tourmodell erstellt wird, das wir
‫in der letzten Vorlesung erstellt haben.
‫Also
‫sagen wir neue Tour und geben dann
‫ein Objekt mit den Daten ein.
‫Nennen wir also noch einmal
‫'Der Waldwanderer', so wie wir es
‫zuvor verwendet haben, dann die Bewertung, sagen
‫wir 4. 7,
‫und dann der
‫Preis, sagen wir 497, okay?
‫Dies ist also wieder ein neues Dokument,
‫das wir aus einem Tourmodell
‫oder Funktionskonstruktoren erstellt
‫haben, und wie ich bereits
‫sagte, verwenden wir JavaScript-Funktionskonstruktoren oder JavaScript-Klassen,
‫wenn Sie ES6 verwenden, um Erstellen Sie neue
‫Objekte aus einer Klasse,
‫richtig, und das ist
‫genau die gleiche Syntax, also verwenden
‫wir das
‫Schlüsselwort name und dann den
‫Klassennamen in ES6, einfach so, in Ordnung?
‫Hier ist es nicht genau dasselbe, aber
‫diese Analogie ist hilfreich,
‫um zu verstehen, wie dies funktioniert.
‫Dieses Testtourdokument, das wir gerade erstellt haben, ist
‫also eine Instanz des Tourmodells und enthält
‫jetzt einige Methoden, die wir verwenden
‫können, um
‫mit der Datenbank zu interagieren.
‫Also lass mich dir das zeigen.
‫Also können wir jetzt testTour sagen. save, und das wird
‫dann in
‫der Tour-Sammlung in der Datenbank gespeichert, okay,
‫und so einfach ist es.
‫Wir haben also wieder unsere Dokumentinstanz, die
‫testTour ist, und dort können
‫wir dann die Methode save aufrufen,
‫um das Dokument in der Datenbank zu speichern.
‫Nun, dieses Speichern hier wird dann
‫ein Versprechen zurückgeben, das wir dann konsumieren können.
‫Verwenden wir also für den Moment dann dafür, und
‫in Zukunft werden wir tatsächlich asynchrones
‫Awarten verwenden, um diese Versprechen zu konsumieren, aber für den Moment
‫halten wir es
‫einfach und erstellen keine weiteren Funktionen,
‫und stattdessen sind wir Verwenden Sie
‫hier einfach die Methode then.
‫Hier drin erhalten wir also Zugriff auf das Dokument,
‫das gerade in der Datenbank gespeichert wurde.
‫Der Ergebniswert des Promises, den die Methode save
‫zurückgibt, ist also im Grunde
‫das letzte Dokument, wie es in der Datenbank vorliegt.
‫Lassen Sie uns nun
‫das Dokument in der Konsole protokollieren, in Ordnung?
‫Auf der anderen Seite kann das
‫Speichern dieses Dokuments in der Datenbank auch
‫schief gehen, also fangen wir diesen Fehler ab, okay?
‫Genau wie zuvor haben wir die Methode
‫catch verwendet, um mögliche Fehler abzufangen. Wenn also beim
‫Speichern des Dokuments in der Datenbank
‫ein Fehler auftritt, können wir
‫diesen Fehler hier in dieser
‫Methode abfangen.
‫Okay, also im Grunde hier in dieser Funktion, die
‫ich in catch übergehe.
‫Okay, im Moment möchte ich es wirklich nur
‫in die Konsole einloggen.
‫Sagen wir "Fehler", fügen Sie hier einige Emojis
‫hinzu, um es in der
‫Konsole besser sichtbar zu machen, und dann
‫können wir ein zweites Argument in das Konsolenprotokoll
‫übergeben, das dann der Fehler ist, okay?
‫Sind Sie bereit?
‫Dann speichern wir es jetzt,
‫und das führt dann den Code aus, der sich
‫hier befindet. Erstellen Sie also im Grunde diese neue Tour
‫und versuchen Sie, sie sofort in der Datenbank zu speichern, okay?
‫Also, lasst uns jetzt
‫speichern und sehen, was in der Konsole
‫passiert, und tatsächlich, los geht's.
‫Sie sehen also, dass dies das
‫Dokument ist, das gerade in unserer Datenbank gespeichert wurde, in Ordnung?
‫Hier sehen wir also auch die
‫ID, die von MongoDB einfach automatisch generiert wird
‫und einfach die eindeutige Kennung für das Dokument ist.
‫Genau wie zuvor im Abschnitt MongoDB erhalten
‫wir diesen eindeutigen Bezeichner für das
‫neue Objekt automatisch.
‫Dann fügt Mongoose dieses V auch
‫automatisch hinzu und setzt es hier auf Null,
‫aber das ist jetzt nicht wirklich wichtig, okay?
‫Wichtig ist hier, dass unser
‫neues Dokument tatsächlich erfolgreich in die Datenbank aufgenommen
‫wurde, und um sicherzugehen, gehen wir
‫tatsächlich zu Compass über und werfen einen Blick auf unsere Datenbank dort.
‫Hier haben wir also die Tourensammlung
‫und dann das Dokument, das wir gerade erstellt haben.
‫Es hat also genau dieselbe ID und natürlich alle anderen
‫Daten, die wir dort eingegeben haben, und das
‫ist tatsächlich das Objekt, das wir
‫gerade erstellt haben.
‫Und bedenke, dass wir die Tourensammlung hier
‫in einem der vorherigen
‫Videos tatsächlich gelöscht hatten, richtig,
‫aber Mongoose hat diese neue Sammlung
‫hier automatisch erstellt, sobald wir das
‫erste Dokument mit dem Tourmodell
‫erstellt haben, und so
‫kommt dieser Name
‫hier im Grunde von diesem Tourmodell gibt
‫es uns einfach diesen Pluralnamen, genau wie wir es zuvor hatten.
‫Perfekt, wir haben gerade unsere Express-Anwendung zum
‫ersten Mal wirklich mit einer MongoDB-Datenbank
‫interagieren lassen, und
‫das ist wirklich erstaunlich, wenn Sie mich fragen.
‫Das bedeutet, dass
‫wir jetzt Dokumente direkt aus unserem Code erstellen können.
‫Also, das freut mich sehr, also versuchen wir
‫es noch einmal mit einem
‫anderen, gut, aber bevor wir das
‫tun, möchte ich diese Datei
‫einfach hier neu laden, die dann versucht,
‫dieses Dokument hier erneut in der Datenbank zu
‫speichern , richtig, einfach weil all dieser
‫Code hier jedes
‫Mal ausgeführt wird, wenn wir die Datei speichern.
‫Versuchen wir nun zu erraten, was passieren wird,
‫sobald ich diese Datei speichere.
‫Kannst du es erraten?
‫Warten wir
‫es ab, und tatsächlich bekommen wir
‫jetzt etwas anderes, wir
‫bekommen hier einen Fehler, und
‫der Fehler, den wir sehen, ist
‫diese doppelte Schlüsselfehlersammlung, die hier unten diesen doppelten Schlüssel sagt, okay?
‫Wir haben also bereits eine Tour mit
‫dem Namen 'Forest Hiker', und jetzt
‫haben wir versucht, eine andere zu erstellen,
‫und da wir in unserem Schema diese
‫einzigartige Eigenschaft hier haben, ist dies nicht erlaubt,
‫erinnern Sie sich daran?
‫Also haben wir dieses
‫Unique hier auf true gesetzt, um es unmöglich
‫zu machen, zwei Touren mit dem gleichen Namen zu
‫haben, und so haben wir gerade bewiesen, dass dies tatsächlich funktioniert.
‫In Ordnung, also ersetzen wir einfach den Code,
‫den wir hier haben,
‫um eine neue Tour mit einem anderen Namen zu erstellen.
‫Nennen wir es "The Park Camper"
‫und entfernen wir den Preis und auch
‫die Bewertung.
‫Können Sie sich vorstellen, was jetzt passieren wird?
‫Lassen Sie uns das eigentlich löschen, oder
‫tatsächlich hat es es bereits
‫geladen, denn sobald ich hier geklickt habe, hat es
‫die Datei gespeichert, und so, ja, wir haben nur einen
‫weiteren Fehler bekommen, also können Sie
‫das hier oben sehen, was bedeutet,
‫dass wir nicht erfolgreich gespeichert haben dieses Dokument
‫in die Datenbank, und was wir jetzt hier bekommen,
‫ist ein Validierungsfehler, der
‫aus dem Preisfeld kommt und sagt: "Eine Tour
‫muss einen Preis haben", und genau
‫das ist die Nachricht, die wir hier angegeben haben, oder?
‫Ganz einfach, weil wir in dieser
‫Zeile gesagt haben, dass der Preis ein Pflichtfeld ist,
‫in Ordnung, und dieses
‫erforderliche Feld ist, wie bereits erwähnt, ein Validator,
‫und hier unten erhalten wir dann einen Validierungsfehler.
‫Also lassen Sie
‫uns das jetzt reparieren und den Preis angeben, sagen wir 997, und
‫sparen Sie noch einmal.
‫Diesmal sollte es funktionieren,
‫weil die Bewertung nicht erforderlich ist,
‫und wenn wir
‫hierher kommen, wurde unser Dokument
‫tatsächlich erfolgreich in der Datenbank gespeichert, sehen Sie?
‫Nun, wir haben die Bewertung hier in dieser Testtour nicht angegeben,
‫aber Sie sehen, es ist immer noch 4. 5, und das liegt daran,
‫dass wir den Standard auf
‫4 gesetzt haben. 5 hier oben.
‫Deshalb wollte ich
‫Ihnen das hier in diesem kurzen Beispiel nur zeigen.
‫Okay, wir waren wieder erfolgreich, also lass uns
‫hierher zurückkommen, neu laden, du klickst
‫auf diesen Button, und tatsächlich bekommen
‫wir jetzt unsere beiden Touren.
‫Großartig, und ich erinnere mich, wie großartig es sich
‫für mich angefühlt hat, als ich zum
‫ersten Mal anfing, Express und Mongo zu lernen,
‫und wie man diese Anwendungen
‫erstellte, und ich hoffe wirklich, dass
‫es Ihnen im Moment genauso
‫geht. da Sie gerade Ihre allerersten
‫Dokumente mit Express und natürlich
‫MongoDB erstellt haben.