Transkripte
1. Kurseinführung: Willkommen zurück zu Modul
sechs des ExpressJCurse, Kreditoperationen mit Dies ist eine Fortsetzung der Express
JS-Kursreihe Express
JS-Kursreihe Mein Name ist Shawn Aguanhi, Sie sind Ausbilder für
diese aufregende Reise in die Welt von Mongo Dew und Mongoose zahlreiche
datengesteuerte Anwendungen entwickelt und kann Ihnen sagen, Ich habe zahlreiche
datengesteuerte Anwendungen entwickelt und kann Ihnen sagen, dass die
Beherrschung von Mongo Dew für
moderne Bend-Entwickler
eine unverzichtbare Fähigkeit ist ,
und Mangos machen es unglaublich leistungsfähig und intuitiv und Mangos machen es unglaublich leistungsfähig und In diesem Modul
tauchen wir tief in
Mongo Hier erfahren Sie, wie
Sie Ihre NurJS-App mit
MongoDB verbinden und
effiziente und flexible
Datenschemas mit Mangos entwerfen und
effiziente und flexible
Datenschemas Und dann das Erstellen,
Lesen, Aktualisieren und Löschen von Daten
mithilfe von Mangos-Modellen, das
Beherrschen erweiterter Abfragen, einschließlich Operatoren, logischen Danach
lernen Sie,
Funktionen wie Seitennummerierung
und das Zählen von Dokumenten zu implementieren Funktionen wie Seitennummerierung
und Und schließlich werden Sie
die bewährten Methoden für die
Verwaltung und Aktualisierung
Ihrer Datenbank kennenlernen die bewährten Methoden für die Verwaltung und Aktualisierung
Ihrer Datenbank Dieser Kurs ist perfekt
für Entwickler, die Mongo DB in
ihre No-JS-Anwendungen integrieren möchten Mongo DB in
ihre No-JS-Anwendungen integrieren Wenn Sie
die früheren Module
für Restful ABIs und Express Js abgeschlossen haben, können wir beginnen Es sind keine Vorkenntnisse mit
MongoDB erforderlich. Wir werden von
den Grundlagen ausgehen und schrittweise
komplexeren Themen zuwenden Am Ende dieses Moduls werden
Sie über die
Fähigkeiten verfügen, um
robuste datengesteuerte Anwendungen zu erstellen . Egal, ob Sie
ein kleines persönliches Projekt oder eine
große Produktions-App erstellen . MongoDB und Mongoose bieten
Ihnen
die Flexibilität und Effizienz, die Sie für Ihren
Erfolg benötigen Schließlich basiert
unser Projekt in diesem Modul basiert
unser Projekt einer eigenständigen Anwendung
namens Dieses Projekt umfasst drei
gezielte Übungen, in denen
Sie Mongoo-Schemas
und -Modelle entwerfen , um
Ihre Daten effektiv zu strukturieren,
Crowd-Operationen
schreiben und ausführen, Crowd-Operationen
schreiben und ausführen Daten dynamisch
zu verwalten, und fortgeschrittene
Techniken wie Abfragefilterung,
Seitennummerierung und
Aktualisierung von Dokumenten
unter Verwendung von Industriestandardmustern implementieren Seitennummerierung und
Aktualisierung von Dokumenten
unter Verwendung von Industriestandardmustern unter Verwendung Diese Übungen helfen
Ihnen dabei,
Selbstvertrauen in der Arbeit mit
Mongo Deb und Mangos aufzubauen und bereiten Sie auf die Handhabung komplexer Datenoperationen Ich kann es kaum erwarten, dir zu helfen,
Mongo Di Bi und Mungo zu meistern. Lass uns eintauchen und loslegen. Wir sehen uns in der ersten Vorlesung.
2. Erste Schritte mit MongoDB: Okay, zurück zu unserer
Fairwheels-Anwendung Bisher haben wir die Liste der
Unternehmen in einem Array im Speicher
gespeichert Unternehmen in einem Array im Speicher So erstellen wir keine realen Anwendungen, denn
wenn der Server neu gestartet wird, gehen alle Daten
im Speicher verloren Deshalb müssen wir unsere Daten in einer Datenbank
speichern. Wie ich Ihnen bereits sagte, haben
Sie beim Erstellen von Anwendungen
mit Node und Express beim Erstellen von Anwendungen
mit Node und Express eine
Vielzahl von Optionen in Bezug auf die Datenbank, die
Sie verwenden möchten. In diesem Kurs
werden wir
Mongo DB verwenden, da es sich um Mongo DB verwenden, da ein sehr beliebtes
Datenbankverwaltungssystem handelt,
das ein sehr beliebtes
Datenbankverwaltungssystem handelt,
das häufig in
Anwendungen verwendet wird , die
mit Node und Express erstellt wurden gearbeitet Machen Sie sich also keine Sorgen, wenn wir noch nie mit
Mongo DB Sie werden es Stück für Stück
oder in den nächsten Abschnitten
erfahren Stück
oder in den nächsten Abschnitten Nun, nur um die
richtigen Erwartungen zu wecken, benötigt
Mongo be wirklich
seinen eigenen Kurs Sie werden also am Ende dieses Kurses kein Experte für Mongo Be sein, aber Sie werden
genug lernen, um die Aufgabe zu erledigen Nun, wenn wir noch nie
mit Mongo DB gearbeitet haben, ist
Mongo DB im Grunde das,
was wir
als Dokument oder keine SQL-Datenbank bezeichnen als Dokument oder keine Es unterscheidet sich von herkömmlichen
relationalen Datenbanken wie SQL Server oder
MySQL usw. In Mongo B
haben wir also nicht das Konzept von Tabellen,
Schemas, Ansichten, Datensätzen, Spalten.
Es ist anders. Im Gegensatz zu relationalen Datenbanken,
bei denen Sie Ihre
Datenbank im Voraus entworfen haben, gibt es
in Mongo DB also bei denen Sie Ihre
Datenbank im Voraus entworfen haben, gibt es
in Mongo DB kein
Schema oder Speichern Sie Ihre
JCN-Objekte einfach in Mongo DB. Hier haben wir also eine
Reihe von Unternehmen. Wir können einfach alle
Objekte in diesem Array und
eine Sammlung in Mongo
DB speichern , so einfach ist das Das bedeutet auch, dass
wir bei
der Abfrage unserer Daten JCN-Objekte
aus Mongo DB abrufen und
diese Objekte einfach an den Client zurückgeben können diese Objekte Es gibt also keine Transformation. Das ist genug Einführung in
Mongo DB. Als Nächstes zeige ich Ihnen, wie
Sie
es auf Ihrem Computer installieren
3. MongoDB für Node.js installieren: In diesem Vortrag werde
ich
Ihnen zeigen, wie Sie
Mongo DV unter Windows installieren Öffnen Sie also Ihren Browser und
gehen Sie zu mongodv.com. auf dieser Seite oben links Klicken Sie auf dieser Seite oben links auf Produkt und
wählen Sie dann hier die Option
Community Dies ist der Mongo DV-Server
, den wir auf diesem Computer ausführen. Scrollen Sie nach unten, überprüfen Sie die Version
und stellen Sie sicher, dass
Windows ausgewählt ist Laden Sie jetzt dieses MSI herunter.
Also lass uns das speichern. Ordnung. Und jetzt lass es uns ausführen. Klicken Sie trotzdem auf Installieren. Das gibt uns also einen
sehr einfachen Installer. Lass uns weitermachen. Akzeptieren Sie als Nächstes
die Lizenzvereinbarung. Führen Sie als Nächstes eine
vollständige Installation durch. Nochmals, als nächstes, jetzt auf dieser Seite, gibt es hier ein Kontrollkästchen. Installieren Sie MongoIVKMPAS. Dies sind die
Client-Anwendungsdaten, die wir verwenden, um eine Verbindung zu unserem MongoDB-Server herzustellen Wir schauen uns unsere Datenbanken an. Als Nächstes installieren Ordnung, Mongo DB ist installiert Und unser Mongo DB-Kompass
ist ebenfalls auf den Markt gekommen, wir werden später darüber sprechen Öffnen
wir jetzt den Datei-Explorer und gehen wir zu Program Files
und dann zu Mongo DB. Nächster Server. Die Version, die
ich jetzt verwende, ist 7.0. Es besteht die Möglichkeit, dass die
Version in Zukunft, wenn Sie sich das ansehen, anders sein wird. Wählen Sie also diesen Ordner und dann Ben und schließlich
Mongo D. Da ist Mongo Damon, ein Dienst, der im Hintergrund
läuft Und das ist im Grunde
unser Mongo-DB-Server. Ich möchte, dass Sie
diesen Pfad hier auswählen. jetzt in der Suchleiste nach erweiterten Systemeinstellungen. Auf dieser Seite müssen wir hier
zu den
Umgebungsvariablen gehen. Sie dann aus dieser Liste
von Systemvariablen Pfad aus, Wählen Sie dann aus dieser Liste
von Systemvariablen Pfad aus, klicken Sie auf
Bearbeiten und dann auf Neu. Und hier folgen wir dem Pfad
, den wir zuvor kopiert haben. Dies ist der Pfad
zu dem Verzeichnis , das unseren
Mongo-DV-Server enthält Okay? Wählen Sie jetzt auf dieser Seite
auch Okay aus. Jan. Öffnen Sie jetzt
PowerShell und führen Mongo D aus. Wenn Sie
diese Ausgabe nicht sehen und die
Fehlermeldung erhalten , dass Mongo
D nicht erkannt wird, müssen
Sie Schließen Sie also alle
PowerShell-Fenster, die
derzeit auf Ihrem
Computer geöffnet sind, und öffnen Wenn Sie also Mongo D ausführen, sollten
Sie eine
Ausgabe wie diese sehen Standardmäßig erhalten Sie
eine Fehlermeldung. Also hier, schauen Sie, wir
bekommen diese Ausnahme, nicht existierendes
Pfaddatenverzeichnis,
C, Spalte Backslash-Daten
Backslash Standardmäßig speichert
Mongo DV Ihre Daten in diesem Ordner. Lassen Sie uns also diesen Ordner erstellen. MKDIR, C, Doppelpunkt,
Backslash-Daten, Backslash TV. Okay. Lassen Sie uns
Mongo E jetzt noch einmal ausführen Diesmal
bekommen wir diese Ausnahme nicht. Und die letzte Nachricht
wartet auf Verbindungen
auf Port 27017 Das bestätigt also, dass der Mongo
DV-Server läuft. Jetzt können wir zu
Mongo DV Compass gehen. Also hier ist die Seite
, um loszulegen. Das ist eine Verbindung zum Host herstellen. Wir müssen den
Mongo-DV-Server angeben , zu dem wir eine Verbindung herstellen
möchten Lassen Sie also die
Standardwerte so, wie sie sind. Der Hostname ist also lokaler
Host und der Port ist 27017. Lassen Sie uns jetzt eine Verbindung herstellen. Wunderschön. Wir sind erfolgreich mit unserem
Mongo DV-Server verbunden Also hier
haben wir standardmäßig drei Datenbanken:
Local, Armin Diese sind für MongaTV da,
um seine Arbeit zu erledigen. Wir werden nicht
mit diesen Datenbanken arbeiten.
4. Node.js mit MongoDB verbinden: Ordnung. Lassen Sie uns nun ein
neues Projekt für diesen Abschnitt erstellen Also werde ich einen neuen
Ordner namens Mongo Demo erstellen. Gehen wir in diesen Ordner und
führen NVM darin mit einer US-Flagge aus. Wunderschön. Jetzt müssen wir ein Knoten-Paket
namens Mongoose
installieren Mongoose bietet uns eine einfache EPI, um mit einer Mongo-DB-Datenbank zu arbeiten Okay, Sie können zum
Zeitpunkt der Aufnahme dieses Videos sehen, dass
ich
Mongos Version 7.5 0.0 verwende Wenn Sie also
sicherstellen möchten, dass Sie die gleiche Erfahrung machen wie das, was ich
Ihnen in diesem Video zeigen werde, empfehle
ich Ihnen dringend, genau dieselbe Version zu
installieren Okay, lassen Sie uns hier eine neue
Datei hinzufügen, Indexpunkt JS. Als erstes müssen wir uns mit Mongo Deb verbinden. Also werden wir dieses
Mangos-Modul laden. Und speichere es in den
konstanten Pongos. Dieses Objekt hat jetzt eine
Methode namens connect. Wir verwenden dies, um
eine Verbindung zu Mongo DB herzustellen. Jetzt übergeben wir hier eine
Verbindungszeichenfolge, die Mongo DB,
Allan 127.0 0.0 0.1 ist Allan 127.0 Spalte 27017. Dies bezieht sich auf den Mongo DV , den wir
auf diesem Computer installiert haben Wenn Sie
Ihre Anwendung in einer
Produktionsumgebung bereitstellen möchten , benötigen Sie
eine andere Verbindungszeichenfolge
für die Zu Beginn dieses
Abschnitts über Express
habe ich Ihnen erklärt, wie Sie
verschiedene Konfigurationseinstellungen
für verschiedene Umgebungen verwalten können verschiedene Konfigurationseinstellungen . In diesem Video haben wir
es nicht mit dieser
Komplexität zu tun. Also habe ich hier eine
Verbindungszeichenfolge fest codiert. Aber in einer echten Anwendung sollte
Ihre Verbindungszeichenfolge aus einer Konfigurationsdatei
stammen. Also hier ist unser Mongo-DB-Server. Danach fügen wir
den Namen unserer Datenbank hinzu. In diesem Fall werde ich eine einfache
Playground-Datenbank
verwenden. Jetzt haben wir diese Datenbank nicht erstellt,
und das spielt keine Rolle. wir zum ersten Mal
etwas in diese Datenbank schreiben, erstellt
Mongo E B diese Datenbank automatisch für uns Okay, so stellen wir eine Verbindung
zu einer Mongo I B-Datenbank her. Nun, diese Verbindungsmethode
gibt ein Versprechen zurück. So können wir dann anrufen, wenn
dieses Versprechen erfüllt ist. Das heißt, wir haben eine Verbindung
zu einer Mongo Eb-Datenbank hergestellt. Hier können wir also ein
einfaches Punktprotokoll für die Konsole , das mit Mongo I B
verbunden Übrigens
verwende ich hier der Einfachheit halber
Tensole-Punktprotokoll Wie ich Ihnen im
Abschnitt über Express gesagt habe, in einer echten Anwendung besser, ist
es
in einer echten Anwendung besser, das
Debug-Modul zu verwenden, da
Sie damit mehr
Kontrolle darüber haben, wie viele dieser
Debugging-Nachrichten Sie In diesem Abschnitt
möchten wir uns jedoch nicht von zu viel Komplexität ablenken
lassen. Wir wollen uns nur auf Mongo DB
konzentrieren. Dies ist also für ein Szenario, in dem wir erfolgreich eine Verbindung
zu einer Mongo IB-Datenbank Aber was ist, wenn etwas schief
geht? Wir wollen diesen Fehler auffangen. Hier erhalten wir ein Fehlerobjekt und zeigen
es dann auf der Konsole an. Also Konsolen-Punktfehler. Verbindung zu mangiiB schlägt fehl. Und dann fügen wir
das Fehlerobjekt hinzu. Wunderschön. Lassen Sie uns nun diese Anwendung
ausführen. Also zurück im Terminal, North Moon Index Dot JS. Also können wir sehen, dass wir erfolgreich
mit Mongerib verbunden sind.
5. Datenschemas mit Mongoose entwerfen: Also haben wir eine Verbindung zu
unserer Mongo DB-Datenbank hergestellt. Jetzt
müssen wir als Nächstes ein Schema erstellen. Wir verwenden ein Schema, um die
Form von Dokumenten innerhalb
einer Sammlung in Mongo DB zu definieren .
Was meine ich damit? Nun, lasst uns zu
unserem Mongo-DB-Kompass zurückkehren. Ich habe diese
Datenbank hier erstellt, Boden. Und in dieser Datenbank haben wir diese Sammlung namens Kurse. Eine Sammlung in Mongo DB ist wie eine Tabelle in einer
relationalen In dieser Sammlung
Curses-Sammlung haben
wir jetzt drei haben
wir Ein Dokument in Mongo IB ähnelt einer Zeile in
einer relationalen Datenbank In relationalen Datenbanken haben
wir also Tabellen In Mongo DB haben wir
Sammlungen und Dokumente. Schauen wir uns nun diese Sammlung
an. Also hier ist ein Beispiel
für das Dokument. Jedes Dokument ist ein Container
mit Schlüssel-Wert-Paaren. Hier haben wir also die Underline-ID, was eine eindeutige Kennung ist Für jedes Dokument haben wir Tags
, also eine Reihe
von Schlüssel-Wert-Paaren Wir haben den Namen, den Autor, die Veröffentlichung, das Datum und die Version. Machen Sie sich jetzt keine Gedanken darüber,
wie ich das erstellt habe. Das wirst du in den
nächsten Vorlesungen lernen. Jetzt haben wir in Mongoose
dieses Konzept namens Schema. Das ist nur spezifisch
für Mungos. Es ist kein Teil von Mongo DB. Wir verwenden ein Schema in
Mongoose, um
die Form von Dokumenten in
einer Mongo-DB-Sammlung zu definieren die Form von Dokumenten in
einer Mongo-DB-Sammlung Also verwenden wir das, um zu definieren,
welche Eigenschaften wir in diesem Dokument
haben Lassen Sie mich Ihnen nun zeigen
, wie Sie ein Schema erstellen. Also zurück im VS-Code, definieren
wir eine Konstante, nennen wir sie Kursschema. Dieses Schema definiert
die Form der
Kursdokumente in unserer
Mongo-DB-Datenbank Also haben wir das auf eine neue
Mongoose-Schemaklasse gesetzt. Hier
übergeben wir beim Erstellen
einer Instanz dieser Klasse ein Objekt Und in diesem Objekt geben
wir die
Schlüssel-Wert-Paare an, die wir
in Kursdokumenten haben sollten. Sie möchten also, dass jeder Kurs
eine Namenseigenschaft hat, und der Typ dieser
Eigenschaft sollte eine Zeichenfolge sein. Ebenso sollte jeder Kurs einen Autor vom Typ Zeichenfolge
haben. Ich möchte, dass unsere Kurse X haben. Und hier möchte ich
eine Reihe von Zeichenketten haben. Technisch nicht, wenn
das gespeichert wird, wird
jedes Objekt in diesem Array ein Schlüssel-Wert-Paar sein. Der Schlüssel wird der Index sein und der Wert wird diese Zeichenfolge sein. Jetzt möchte ich auch, dass
jeder Kurs
eine Datumseigenschaft vom Typ Datum hat. Jetzt können wir dem auch einen Standardwert geben
, sodass wir diesen Wert
von Datum zu Objekt ändern können. Dieses Objekt ist eine
Typeigenschaft, die wir auf Datum gesetzt haben, und es hat auch eine
Eigenschaft namens default, und wir setzen diese jetzt auf date dot. Damit
müssen wir bei der Erstellung
eines Kursobjekts kein Datum angeben . Datum, das jetzt
als Standardwert
für diese Eigenschaft verwendet wird. Und schließlich möchte ich, dass
jeder Kurs eine Eigenschaft mit dem Namen Ich veröffentlicht
hat, es
sich um einen booleschen Also hier ist die Liste der Typen wir bei der
Erstellung eines Schemas verwenden können Wir haben Zeichenfolge,
Zahl, Datum, Puffer, die wir zum Speichern von
Binärdaten verwenden, boolesche Werte,
Objekt-IDs, die für die
Zuweisung eindeutiger
Bezeichner und Arrays verwendet werden Zuweisung eindeutiger
Bezeichner Als Nächstes zeige ich Ihnen, wie
Sie ein Dokument auf der Grundlage
des Kursschemas erstellen und speichern
6. Mongoose-Modelle erstellen und verwenden: Also hier ist unser
Kursschema, das
die Form von Kursdokumenten
in einer Mongo De-Datenbank definiert die Form von Kursdokumenten
in einer Mongo Jetzt müssen wir
das in ein Modell kompilieren. Was ist ein Modell? Nun, zu
Beginn des Kurses habe ich über das Konzept
von Klassen und Objekten gesprochen. Als Beispiel habe ich dir gesagt, dass wir eine
Klasse namens Mensch haben können, wir können ein Objekt wie Shen haben Ein Objekt ist also eine
Instanz einer Klasse. Eine Klasse ist nur ein Bauplan, aber ein Objekt ist ein
Moment dieses Entwurfs In dieser Anwendung möchten
wir nun eine
Klasse namens Kurs haben Und dann sollten wir in der Lage
sein,
Instanzen dieser Klasse zu erstellen ,
wie einen Knotenkurs. Und dann können wir diesen
Knotenkurs in unserer Datenbank speichern. Um also einen
klassenähnlichen Kurs zu erstellen, müssen
wir dieses
Schema in ein Modell kompilieren. Also so machen wir das. Dieses Mungo-Objekt, das
wir haben, hat eine Methode namens Model, die zwei
Argumente akzeptiert Das erste Argument
ist der singuläre Name der Sammlung, für die
dieses Modell bestimmt ist. In unserer Mongo EB-Datenbank möchten
Sie also eine Sammlung
namens Kurse haben, oder? Also hier ist ein Kurs mit einem singulären
Namen. Das zweite Argument
ist ein Schema, das die Form der
Dokumente in dieser Sammlung
definiert Das ist also das Kursschema. Damit erhalten wir jetzt eine
Kursklasse in unserer Anwendung. Wir können das also auf eine
Konstante setzen, die als Kurs bezeichnet wird. Und beachten Sie, dass ich hier die Namenskonvention von
Paceal verwende. Die erste Ebene ist
natürlich in Großbuchstaben geschrieben, das bedeutet,
dass es sich um eine Klasse handelt.
Es ist kein Objekt Jetzt können wir ein Objekt erstellen, das auf dieser Klasse
basiert. Lassen Sie uns also ein Kursobjekt erstellen. Und hier verwende ich die Schreibweise mit Kamelbuchstaben, weil der erste Buchstabe
des ersten Wortes, in diesem Fall natürlich, klein geschrieben
ist Also verwenden wir Camel Case, um
unsere Objekte zu benennen, und pacelcase
, um unsere In diesem Kurs setzen wir
das also auf einen neuen Kurs, und in dieser
Konstruktorfunktion übergeben
wir ein Objekt, wir initialisieren unser Kursobjekt wir initialisieren Lassen Sie uns also die
Eigenschaften dieses Kurses festlegen. Ich werde den Express-JS-Kurs als Namen
festlegen. Stellen Sie den Autor auf Shiv ein. Stellen Sie den Text auf ein
Array aus zwei Zeichenketten ein. Also können wir Express haben
und sagen wir wieder rein. Nun, das ist eine
interessante Sache mit Mango- oder
No-SQL-Datenbanken im Allgemeinen. Sie können sehen, dass ein Dokument in Mongo DB ein
komplexes Objekt sein kann Also hier ist diese Tag-Eigenschaft
ein Array von Zeichenketten. haben wir so
etwas nicht In relationalen Datenbanken Mit anderen Worten, eine Zeile in einer relationalen Datenbank
hat einfache Attribute Wenn Sie
diese Struktur in einer
relationalen Datenbank modellieren möchten , benötigen
Sie drei Tabellen, Kurse, Schlagworte
und eine Zwischentabelle
namens Course-Tags, da es
hier eine
Viele-zu-Viele-Beziehung
zwischen Kursen und Stichwörtern gibt zwischen Kursen Mongo IB oder generell keine
SQL-Datenbank, wir haben diese Struktur nicht Wir müssen diese Tabellen nicht
definieren. Wir müssen sie nicht schreiben. Wir erstellen einfach unsere Objekte und speichern sie in einer Datenbank. Deshalb nennen wir sie
Schemaless . Sie haben kein Schema. Also hier ist unser Steuereigentum. Jetzt ist die andere Immobilie, die
wir haben, Datum. Aber zuvor habe ich
dafür einen Standardwert definiert. Also werde ich das hier nicht einstellen und die letzte Eigenschaft
wird veröffentlicht. Ich werde das auch setzen, wahr. Lassen Sie uns das kurz zusammenfassen. Sobald wir ein Schema haben, müssen
wir es in ein Modell kompilieren
, das uns eine Klasse gibt Als Nächstes können wir ein
Objekt erstellen, das auf dieser Klasse basiert. Und dieses Objekt ist einem Dokument in einer
Mongo-DB-Datenbank zugeordnet Als Nächstes zeige ich Ihnen,
wie Sie dieses Dokument
in unserer Datenbank speichern
7. Persistente Daten mit Mongoose: In Ordnung. Also hier ist
unser Kursobjekt , das einem
Kursdokument in Mongo DV Speichern wir das nun in unserer
Datenbank. Dieses Kursobjekt hat also
eine Methode namens save. Jetzt haben wir es hier mit
einer asynchronen Operation zu tun ,
weil es
einige Zeit dauern wird , diesen Kurs in
der Datenbank zu speichern , weil wir auf
das Dateisystem zugreifen
werden Deshalb haben wir es mit
einer asynchronen Operation zu tun. Das Ergebnis dieser Operation
wird in Zukunft vorliegen. Diese Methode
gibt also ein Versprechen zurück. Wir können es fliegen
und das Ergebnis erzielen. Dieses Ergebnis ist das
eigentliche Kursobjekt , das in der Datenbank gespeichert ist Wenn wir diesen
Kurs also in Mongo DB speichern, weist
Mongo DB diesem Kursobjekt mit
diesem Kursdokument eine eindeutige Kennung zu Damit können wir nun
die IRE sehen, die von Mongo DB
zugewiesen wurde Loggen wir es also
im Konsolenergebnis ein. Wie ich Ihnen bereits gesagt habe, sollte sich
Ihr Code
immer in einer asynchronen Funktion
befinden, wenn ich ein Gewicht verwende sollte sich
Ihr Code
immer in einer asynchronen Funktion
befinden, wenn ich ein Also werde ich
hier eine Funktion
definieren , st, Kurs erstellen Wir setzen das auf eine
Synchronisierungsfehlerfunktion wie diese und fügen den ganzen Code
in diese Funktion ein. Also erstellen wir ein Kursobjekt, speichern es und zeigen
das Ergebnis dann auf der Konsole an. Und schließlich
nennen wir hier Create Curse. Speichern. Jetzt, zurück im
Terminal, werde
ich in diesem Abschnitt diese
Anwendung mit
Node statt mit Norm ausführen ,
weil ohne jemanden
jedes Mal, wenn ich eine einfache
Änderung am Code vornehme, dazu führt, dass
ein neues Dokument in unserer
Mongo-DB-Datenbank erstellt wird ein neues Dokument in unserer
Mongo-DB-Datenbank Also Node-Index-Punkt js. Wunderschön. Unser Kurs wurde in der Datenbank
gespeichert, und hier ist das Dokument, das tatsächlich
in unserer Mongo-DB gespeichert
ist Schauen Sie, Mongo DB hat
dieser Eigenschaft eine Unterstreichungs-ID zugewiesen, und sie ist auf diese
eindeutige Kennung gesetzt Gehen wir nun zurück zu
Mongo DB Compass. Also lass uns hier aktualisieren. Hier ist unsere Spielplatz-Datenbank. Wir haben diese Kurssammlung und in dieser Sammlung
haben wir ein Dokument, richtig? Das ist also das Schöne an Mongo
DB- oder Nose EQUL-Datenbanken. Im Gegensatz zu relationalen Datenbanken mussten
wir keine Tabelle
erstellen Wir mussten für diese Tabelle kein
Skript erstellen. Einfach ein Dokument erstellt und in
unseren Mongo-DB-Daten gespeichert Also zurück im Board, lassen Sie uns diese Werte
ändern und ein weiteres Dokument
erstellen Denn in der nächsten Vorlesung werde
ich Ihnen zeigen,
wie man Dokumente abfragt. Lassen Sie uns das also
auf den ReactJS-Kurs ändern und zwei Tags hinzufügen React Dot JS und Frontend Speichern. Zurück im Terminal beenden
wir diesen Vorgang und
führen diese Anwendung erneut aus. Hier ist unser zweites Dokument. Und wenn Sie in MongoivKmpas nachschauen, lassen Sie uns das Ergebnis aktualisieren Schauen Sie, wir haben zwei Dokumente
in unserer Kurssammlung. Wunderschön. Als Nächstes zeige
ich Ihnen,
wie Sie Dokumente abfragen.
8. Mongoose-Abfragen beherrschen: Ordnung, lassen Sie
mich Ihnen zeigen, wie Sie Dokumente aus einer
Mong Also hier werde ich
eine weitere Funktion für Pas G-Kurse erstellen eine weitere Funktion für Pas G-Kurse Wir haben das zur
Async-Fehlerfunktion gesagt. Und dann werde ich den Aufruf zum
Erstellen eines Kurses durch G-Kurse
ersetzen Erstellen eines Kurses durch G-Kurse Lassen Sie uns nun
diese Funktion implementieren. Diese Kursklasse
, die wir zuvor definiert haben,
enthält also eine Reihe von Methoden
zum Abfragen von Dokumenten Wir müssen herausfinden, um
eine Liste von Dokumenten zu bekommen. Wir haben es per Ausweis gefunden, was ziemlich
selbsterklärend ist Und wir haben einen gefunden, der ein einzelnes Dokument
zurückgibt. Jetzt haben wir hier ein paar weitere
gute Methoden, aber mach dir darüber keine Sorgen. Wir verwenden sie, um ein Dokument zu finden und es dann zu entfernen oder zu aktualisieren. Wir werden
sie uns später in diesem Abschnitt ansehen. Schauen wir uns also die gute Methode an. Wie Sie sehen können, gibt diese Methode eine Dokumentabfrageoption
zurück. Jetzt
ist dieses Dokumentabfrageobjekt so etwas wie ein Versprechen. Es hat also eine Than-Methode, sodass wir sie vermeiden
und das Ergebnis erhalten können Und damit haben wir alle
Kurse in unserer Datenbank. Lassen Sie uns
es also auf der Konsole anzeigen. Jetzt zurück im
Terminalknotenindex zu Js. Also schau, wir bekommen ein
Array mit zwei Objekten. Hier ist unser erster Kurs, das ist der Express-TS-Kurs, und hier ist der zweite Kurs. Das ist der Kurs „React to GS“. Wunderschön. Jetzt können wir hier
auch einen Filter passieren. Als erstes Argument an
die Fine-Methode übergeben
wir also ein Objekt, und in diesem Objekt fügen wir oder
mehrere
Schlüsselwertpaare für die Filterung hinzu. Nehmen wir also an, wir wollen
nur die Kurse von Shevn bekommen. Also setzen wir den Autor auf Shevn, wir
können eine andere Eigenschaft übergeben. Ein weiterer Filter wird
veröffentlicht über. Mit diesem Filter bekommen wir also nur die veröffentlichten Kurse pro genähtem Stück, und so
kommen wir zu den Dokumenten Aber hier können wir unsere Dokumente auch
sortieren. Wir können ein Limit für die Anzahl
der zurückgesandten Dokumente festlegen . Wir können auch bestimmte
Eigenschaften im Dokument auswählen. Nehmen wir an, unser Kurs dokumentiert
dort 50 Eigenschaften Vielleicht möchten wir nicht
all diese Eigenschaften
an den Client zurückgeben , vielleicht möchten Sie nur ihren Namen
zurückgeben. Lassen Sie mich Ihnen zeigen, wie Sie eine komplexere Abfrage
erstellen können. Sie haben bereits gesehen, dass diese gute Methode
ein Dokumentabfrageobjekt zurückgibt. Schau, Dokumentenabfrage, richtig? Also hier können wir
diese Abfrage anpassen . Wir können ein Limit
anwenden. Nehmen wir an, wir können die Dokumente
sortieren. Hier übergeben wir ein Objekt. Und in diesem Objekt fügen wir ein oder mehrere
Schlüsselwertpaare für die Sortierung hinzu. Nehmen wir an, wir möchten
diese Dokumente nach ihrem Namen sortieren . Wir haben den Namen auf eins gesetzt. Eins gibt eine aufsteigende Reihenfolge an. Wir möchten diese Dokumente
in absteigender Reihenfolge sortieren, Sie verwenden minus eins Wie ich Ihnen bereits sagte, können Sie hier mehrere
Schlüssel-Wert-Paare
haben Wir haben auch eine andere
Methode zur Auswahl, mit der wir
die Eigenschaften auswählen können , die zurückgegeben werden
sollen. Nehmen wir zum Beispiel an, wir möchten
nur den Namen
und die steuerlichen Eigenschaften
jedes Kursdokuments abrufen . Also setzen wir den Namen auf eins
und den Text auch auf eins. Lassen Sie uns nun diese Anwendung
wieder im Terminalknoten ausführen , Index Js. Also schau, jetzt haben die
Kursobjekte, die wir bekommen, nur drei Eigenschaften. Taggen Sie den Namen, wir haben
diese beiden Eigenschaften ausgewählt, aber wir erhalten auch die
zugrunde liegende ID-Eigenschaft , die standardmäßig von
Mongo DB zugewiesen wird Außerdem sind diese Dokumente in absteigender Reihenfolge nach ihrem Namen
sortiert Der
React-GS-Kurs steht also an erster Stelle, obwohl wir
diesen Kurs später erstellt haben So erstellen wir also Abfragen. In der nächsten Vorlesung werde
ich
Ihnen zeigen, wie Sie eine
komplexere Filterung durchführen können.
9. Mongoose-Abfrage-Vergleichsoperatoren: In der letzten Vorlesung haben
Sie also gelernt, wie Sie Dokumente mit der Fine-Methode
filtern können Oder in den nächsten Vorlesungen werde
ich Ihnen zeigen, wie Sie komplexere Abfragen
erstellen können. Wenn Sie noch nie mit Mongadb
gearbeitet haben, werden
Sie feststellen, dass die Syntax, die
wir zum Erstellen von Abfragen verwenden,
etwas
ungewohnt oder seltsam ist,
und ich verstehe
das vollkommen, weil ich
schon einmal werden
Sie feststellen, dass die Syntax, die
wir zum Erstellen von Abfragen verwenden, etwas
ungewohnt oder seltsam ist, und ich verstehe
das vollkommen , weil ich
schon Aber in diesem Vortrag werde
ich Ihnen
eine Technik zeigen, die Sie sich an
diese Syntax erinnern können, und dann werden Sie feststellen, dass
sie eigentlich sehr einfach ist Das Thema dieser Vorlesung
sind also Vergleichsoperatoren. In Mongo DV haben wir also eine Reihe von Operatoren
zum Vergleichen von Da Mongoose auf dem
Mongo-DV-Treiber basiert,
diesen Standardoperatoren
, die Mongo Dee versteht,
sind sie auch in Mongoose verfügbar. Also hier sind die
Vergleichsoperatoren
, die wir in Mongo DB haben. Wir haben EQ, was kurz für gleich
ist, wir haben NE, was
kurz für ungleich ist. Wir haben GT, was die Abkürzung
für größer als GTE ist, was die Abkürzung für
größer als oder gleich In ähnlicher Weise haben wir LT, was die Abkürzung für weniger als ist. Wir haben LTE, was die Abkürzung
für weniger als oder gleich ist. Wir haben auch N und NIN, was die Abkürzung für nicht N ist. Stellen
wir uns nun für die Zwecke dieser Vorlesung vor, für die Zwecke dieser Vorlesung vor, dass unsere Kurse eine Preiseigenschaft
haben. Ich werde diese gute Methode kommentieren
. Nehmen wir an, wir wollen
alle Kurse bekommen, die 10$
kosten. Wie machen wir das? Also rufen wir fine an, übergeben ein
Objekt zum Filtern, setzen den Preis auf zehn, sodass nur die
Kurse zurückgegeben werden, die 10$ kosten. Was ist nun, wenn wir Kurse wollen
, die mehr als 10$ kosten? Wie können wir das mit
JCN-Objekten in JavaScript ausdrücken? Nun, Sie wissen, dass
ein Objekt
in JavaScript im Grunde eine
Sammlung von Schlüssel-Wert-Paaren ist Also hier ist unser Schlüssel der Preis
und unser Wert ist zehn. Mit einem einfachen Wert können
wir kein Konzept
von mehr als oder
mehr als zehn ausdrücken . Um das
Konzept von mehr als zehn auszudrücken, müssen
wir also ein Objekt übergeben. Hier ist dieses Objekt wieder ein Container
für Schlüssel-Wert-Paare. Jetzt kann ich hier einen
dieser Operatoren als Schlüssel verwenden. Lassen Sie mich hier den Operator „
größer als“ verwenden. Do sine gibt an
, dass es sich um einen Operator handelt. GT, der größer als ist, und wir setzen diesen Wert auf
zehn. Also sieh, was ich getan habe. Ich habe einen einfachen Wert wie
Zehn durch ein Objekt ersetzt , um ein Konzept
auszudrücken, das Konzept von mehr als zehn. Jetzt können wir diesen Operator
auf größer oder gleich ändern . Wenn Sie Kurse wünschen, bei denen das Ergebnis ebenfalls
10 USD kostet. Lassen Sie uns das auf die nächste Stufe bringen. Was ist, wenn wir die
Kurse nehmen wollen, die 10-20 $ kosten? Auch hier können wir
einen anderen Operator verwenden, also weniger als oder gleich 20$ So können wir
diese Vergleichsoperatoren verwenden , um Dokumente
abzufragen Schauen wir uns nun
ein anderes Beispiel an. Stellen wir uns vor, wir
möchten Kurse bekommen, die 10 oder 15$ oder 20$ kosten Also werde ich das
loben. Fangen wir bei Null an. Also rufen wir find auf, übergeben ein Objekt zum Filtern und
legen den Preis erneut fest. Wenn ich zehn verwende, kann ich Gleichheit nur mit zehn
vergleichen. Das wollen wir nicht. Wir
wollen Kurse, die entweder 10$ oder 15$ oder 20$ kosten Also ersetzen wir diesen Wert durch ein Objekt, um unsere Anfrage
auszudrücken Hier verwenden wir einen
Operator, der in Dollar ausgedrückt wird. Nun, was würden wir für den Wert
verwenden? Hier möchten wir
eine Anfrage stellen, bei der Kurse entweder 10$, 15$ oder 20$ kosten Wir haben es hier also mit
drei Werten zu tun. Welches Javascript-Konstrukt verwenden
wir , um
mehrere Werte auszudrücken? Wir verwenden ein Array, oder? Also zehn, 15, 20. Schau, was ich bisher gemacht habe. Ich habe nichts auswendig gelernt. Ich versuche einfach logisch zu denken, wie wir
Script-Konstrukte verwenden können ein Konzept auszudrücken
, um eine Anfrage
auszudrücken Das sind also die
Vergleichsoperatoren. Und in der nächsten
Vorlesung werden
wir uns die
logischen Operatoren ansehen.
10. Logische Operationen in Mongoose-Abfragen: In dieser Vorlesung
werde ich Ihnen zeigen,
wie Sie die logischen
Abfrageoperatoren verwenden Also hier ist unsere ursprüngliche Abfrage. Wir bekommen alle Kurse
, die diesen Kriterien entsprechen. Sie wurden von Shevin verfasst
und veröffentlicht. Was ist, wenn wir die von
Shevin veröffentlichten
Posen oder die veröffentlichten Kurse Wir können also Kurse anbieten
, die zwar veröffentlicht werden, aber nicht von Chevan
verfasst Da
brauchen wir den Operator. Also hier sind die logischen
Operatoren, die wir haben. Wir haben R und M. Sehen Sie, wie wir diese Operatoren verwenden
können. Also werde ich das
loben. Stattdessen werden wir
die Fine-Methode
ohne Filter aufrufen die Fine-Methode
ohne Filter Danach
rufen wir die R-Methode auf. Nun, hier ist eine Frage an dich. Welches Java-Strip-Konstrukt verwenden
wir, um
mehrere Werte zu speichern? Wir verwenden ein Array, oder? Hier
müssen wir also ein Array übergeben, und in diesem Array fügen
wir zwei Objekte hinzu. Jedes Objekt ist ein Filter, genau wie das Filterobjekt , das wir an die Fine-Methode übergeben. In diesem ersten
Filterobjekt fügen wir also den Autor hinzu. Wir setzen das in einer Sekunde auf Shi, wir fügen das als veröffentlicht und setzen das auf „Wahr“. Damit
erhalten wir Kurse, die von Shevin
verfasst wurden, oder
Kurse, die Der logische Operator N
ist genau derselbe. Aber anstatt die Methode zu verwenden, verwenden
wir die Methode. Und damit übergeben wir eine
Reihe von Filterobjekten. Das ist nun
technisch gesehen vergleichbar mit Übergabe eines Filterobjekts
an die Find-Methode. Aber manchmal finden
Sie bei
komplexeren Abfragen eine Möglichkeit, die N-Methode zu verwenden. Als Nächstes werden wir uns reguläre Ausdrücke
ansehen.
11. Reguläre Ausdrücke in MongoDB nutzen: Also zurück zu unserer ursprünglichen Abfrage.
In diesem Beispiel erhalten wir
Kurse, deren Autor genau die Zeichenfolge
ist Wenn wir hier einen
Kurs mit Autoren
wie Shevin oder Shevin a Guanhi haben , werden
diese Kurse Wenn Sie also mehr Kontrolle
über das Filtern von Zeichenketten
haben möchten , müssen
Sie einen regulären Ausdruck verwenden Lassen Sie mich Ihnen zeigen, wie das funktioniert. Also werde ich das
kommentieren. Nehmen wir an, wir möchten Kurse bekommen
, deren Autor mit
Chewn beginnt . So
schreiben wir diese Abfrage Suchen Sie also als Objekt,
legen Sie den Autor fest. Anstatt hier
eine Zeichenfolge zu übergeben, übergeben
wir jetzt Ihren regulären Ausdruck. Also fügen wir einen Schrägstrich hinzu, wir
fügen ein Muster hinzu, das wir in einer
Sekunde ändern
werden, und einen weiteren Schrägstrich Das ist also eine Syntax zur Darstellung eines
regulären Ausdrucks In regulären Ausdrücken können
wir dieses Karatzeichen jetzt verwenden , um eine Zeichenfolge darzustellen, die mit etwas
beginnt. Hier kann ich Shen hinzufügen. Dieser reguläre Ausdruck
steht also für eine Zeichenfolge
, die mit Shen beginnt Solange der andere mit Shen
beginnt,
ist es egal, was wir haben Diese Kurse werden eingestellt. Was ist nun, wenn wir nach
Kursen suchen wollen , deren Autor
mit einer bestimmten Zeichenfolge endet? Nehmen wir an, sie endet mit Ragan G. So
schreiben wir diese Abfrage Gut, als Objekt setzen
wir den Autor auf
einen regulären Ausdruck Schrägstrichmuster Und das Muster, das wir
hier verwenden, ist Rugen hi Dasg. Ein Puppensinus in
regulären Ausdrücken gibt das Ende einer Zeichenfolge an Hier
suchen wir also nach Kursen , deren Autor mit abonci endet Bei dieser Abfrage wird nun zwischen Groß- und Kleinschreibung unterschieden. Wenn Sie
die Groß- und Kleinschreibung nicht berücksichtigen möchten, fügen
Sie am Ende ein I hinzu Und zum Schluss schauen wir uns das letzte
Beispiel an. Was ist, wenn Sie
nach Posen suchen möchten , deren Autor
das Wort Schiff enthält? Also kann Shift
am Anfang sein. Es kann in der Mitte sein, oder es kann am Ende sein. Lassen Sie mich Ihnen zeigen
, wie Sie diese Abfrage schreiben. Also nennen wir Fine als Objekt,
Autor, regulärer Ausdruck. Hier ist unser Muster. Punkt,
Stern, Shift-Punkt, Stern. Stern in einem
regulären Ausdruck
bedeutet also , dass wir null
oder mehr Zeichen haben können. Es ist uns egal, was
diese Zeichen sind. Bei diesem Muster mit
diesem regulären Ausdruck können
wir also null
oder mehr Zeichen
vor oder nach der Schicht haben . Und noch einmal, wenn Sie
möchten , dass Groß- und Kleinschreibung nicht berücksichtigt wird, setzen
wir ein I ans Ende Natürlich können Sie
komplexere reguläre Ausdrücke verwenden. Die Erklärung
regulärer JavaScript-Ausdrücke würde den Rahmen
dieses Kurses sprengen. Wenn Sie also mehr
über reguläre Ausdrücke erfahren möchten, lesen Sie
einfach ein Tutorial über
reguläre JavaScript-Ausdrücke.
12. Pagination mit Mongoose implementieren: In dieser Abfrage filtern
Sie also unsere Kurse und wählen
nur deren Namen und nur deren Namen und Wenn Sie also diese Anwendung ausführen, erhalten wir eine
Reihe von zwei Kursen. Und jeder Kurs hat
diese drei Eigenschaften. Manchmal
wollen wir nur die Anzahl der
Dokumente anstelle
der tatsächlichen Dokumente abrufen . Wenn das also der Fall ist, müssen
wir die Select-Methode nicht
verwenden. Stattdessen rufen wir count auf, und das gibt die Anzahl der
Dokumente zurück , die
diesen Kriterien entsprechen. Also zurück im Terminal, lassen Sie uns diese Anwendung erneut
ausführen. Schau, wir haben zwei Dokumente
, die unserem Filter entsprechen.
13. Mongoose-Update-Muster: Abfrage zuerst: Sie haben also früher von dieser Limit-Methode
erfahren. Eine Methode, die mit
der Limit-Methode
einhergeht ,
ist eine Skip-Methode. Und wir verwenden dies, um die Paginierung zu
implementieren. Lassen Sie mich Ihnen zeigen, wie das funktioniert. Lassen Sie mich also eine Konstante
namens Seitenzahl definieren. Das kann eins, zwei,
drei sein, was auch immer. Also lass uns das auf zwei setzen. Wir haben eine weitere Konstante
namens Seitengröße. Ja. Also habe ich diese Zahlen fest
codiert. Das ist nur der Einfachheit halber. In einer realen Anwendung übergeben
wir diese Werte jedoch als Abfragezeichenfolgenparameter
an RESTful-APIs Möglicherweise haben Sie also eine API,
um die Liste der Kurse abzurufen. Sein Endpunkt kann
Abfragezeichenfolgenparameter wie diesen abrufen. Also Seitennummer, wir setzen das auf zwei und Seitengröße auf zehn. So funktioniert das
in der realen Welt. Im Moment
müssen wir uns darüber keine Sorgen
machen . Also lass uns das löschen. Um die
Paginierung zu implementieren, müssen
wir alle
Dokumente auf der vorherigen Seite überspringen Also hier ist die Formel. Seitenzahl minus das
Einmalige der Seitengröße. Also hier gehe ich davon aus, dass die
Seitenzahl bei eins beginnt. Genauer gesagt, das ist die
Seitenzahl, nicht der Seitenindex. Okay? Und dann ändern wir das
Limit auf Seitengröße. Damit können wir die
Dokumente auf einer bestimmten Seite abrufen.
14. Mongoose-Update-Muster: Update-Ansatz: Sie haben also viel
über das Queeren von Dokumenten gelernt. In dieser Vorlesung
werde ich Ihnen zeigen,
wie Sie Dokumente
in der Mongo DB-Datenbank aktualisieren Lassen Sie uns also eine neue Funktion erstellen. Also letztes Update, Kurs. Wir haben das auf eine Fehlerfunktion gesetzt und es sollte eine ID benötigen. Also als ID geht das zugeführte R
zu einem Koordinatenblock. Das ist die ID des Kurses. Wir werden
ihn aktualisieren und dann hier werden wir ihn durch den Aktualisierungskurs ersetzen
. Jetzt gibt es grundsätzlich zwei Möglichkeiten, ein
Dokument in MongaIV zu aktualisieren Einen Ansatz
nenne ich, wo du zuerst bist. Sie suchen also
mit Fine by ID nach einem Dokument, dann ändern wir seine Eigenschaften. Und dann
rufen Sie schließlich die Save-Methode auf. Dies ist wahrscheinlich der Ansatz , den Sie
in anderen Frameworks verwendet haben. Der andere Ansatz ist das,
was ich Update First nenne. Anstatt also zuerst
ein Dokument abzurufen, gehen
wir in die Datenbank
und aktualisieren es direkt Jetzt können wir oft auch das
aktualisierte Dokument abrufen. In diesem Vortrag
werde ich Ihnen also den ersten Ansatz zeigen, und den anderen
Ansatz werden wir uns im nächsten Video ansehen. Lassen Sie uns also all
diese Kommentare löschen. Hier wollen wir den
Kurs mit einer bestimmten ID bekommen. Also natürlich Punkt Fine By ID, wir geben diese ID hier weiter. Also, das gibt ein Versprechen zurück, also nehmen wir es weg, holen uns das
Ergebnis und speichern es hier. Nun, es besteht die Möglichkeit, dass es
keinen Kurs mit einer bestimmten ID gibt, also müssen wir das überprüfen. Wenn wir keinen Kurs haben,
werden wir sofort zurückkehren. Andernfalls werden wir die Eigenschaften
dieses Kurses
aktualisieren. So können wir den Kurs „
Punkt ist veröffentlicht“ auf „
true“ setzen und auch „Autor für einen anderen Autor“. Es gibt einen anderen Ansatz. Anstatt
mehrere Eigenschaften festzulegen, rufen
wir die Set-Methode auf. Also natürlich Punktset. Hier übergeben wir ein Objekt mit Schlüssel-Wert-Paaren, die aktualisiert werden sollen. So können wir is published auf
true und author auf
einen anderen Autor setzen . Im Grunde sind diese beiden
Ansätze also identisch. Welchen Sie wählen, ist ausschließlich
Ihre persönliche Präferenz. In dieser Demo werde
ich nun den ersten Ansatz verwenden, und schließlich rufen wir
die Save-Methode auf. Dies ist dieselbe Methode, die wir zuvor
verwendet haben . Erstellen Sie
einen neuen Kurs. Es gibt also ein Versprechen zurück. Wir können es abwarten, das Ergebnis abrufen und es auf der Konsole anzeigen Also das Ergebnis des Punktprotokolls auf der Konsole. Jetzt gehe ich zurück zu
Encompass und hole mir eine gültige Kurs-ID Ordnung. Also hier in
unserer Kurssammlung werde
ich mir diese
Kurs-ID schnappen und sie hier einfügen. Jetzt, zurück im Terminal, lassen Sie uns dieses Programm ausführen. Hier ist der Kurs
, den wir aktualisiert haben. Schau, der Autor ist
auf einen anderen Autor eingestellt. In der nächsten Vorlesung werde ich Ihnen zeigen
, wie Sie
ein Dokument direkt in
der Datenbank aktualisieren ein Dokument direkt in können, ohne es zuerst
abzurufen
15. Dokumente zählen mit Mongoose: Ich habe in der letzten Vorlesung etwas über den
Query First-Ansatz
zur Aktualisierung eines Dokuments gelernt zur Aktualisierung eines Dieser Ansatz ist nützlich, wenn
Sie eine Eingabe
vom Client erhalten und
sicherstellen möchten , dass es sich bei der Aktualisierung um einen gültigen Vorgang
handelt. Hier
haben wir zum Beispiel eine Geschäftsregel. Wenn der Kurs also veröffentlicht wird, sollten wir seinen Autor
vielleicht nicht ändern
dürfen. Um diese Geschäftsregel zu implementieren, müssen
wir zuerst
den Kurs abrufen und dann eine
Logik wie diese schreiben. Wenn der Kurs also veröffentlicht wird, wollen
wir zurückkehren. Wir möchten diesen Kurs nicht
aktualisieren. In diesem Fall verwenden wir also den
Query-First-Ansatz. Aber manchmal wissen Sie,
was Sie tun, Sie erhalten keine
Eingaben vom Kunden. Sie möchten nur
ein Dokument oder
vielleicht mehrere Dokumente
direkt in der Datenbank aktualisieren . Und das werde ich Ihnen in diesem Vortrag
zeigen. Anstatt also
die Fine-by-ID-Methode zu verwenden, verwenden
wir die Methode Update Many
oder Update One. Das erste Argument hier ist nun eine Abfrage oder ein Filterobjekt. Also können wir den
Kurs mit dieser ID bekommen, oder wir können
etwas generischeres übergeben. Wir können alle Kurse abrufen
, die nicht veröffentlicht sind. Damit können wir
mehrere Dokumente auf einmal aktualisieren. In dieser Demo möchten wir nun einen Kurs mit
einer bestimmten ID
aktualisieren. Ich werde
dies ändern, um die ID zu unterstreichen, und das auf das ID-Argument setzen Jetzt ist das zweite Argument der Update-One-Methode
das Update-Objekt Jetzt müssen wir hier einen oder
mehrere der Mongo
DB-Aktualisierungsoperatoren verwenden mehrere der Mongo
DB-Aktualisierungsoperatoren Wenn Sie also nach Mongo
DB-Aktualisierungsoperatoren suchen, finden Sie
auf dieser Seite die Liste aller unterstützten Wir haben also das aktuelle Datum, um den
Wert eines Feldes
auf das aktuelle Datum zu Wir haben Tinte oder Inkrement.
Das ist sehr mächtig Damit können wir den Wert
eines Feldes um den angegebenen Betrag
erhöhen eines Feldes um den angegebenen Betrag Stellen Sie sich vor, Sie möchten eine
Anwendung wie Facebook erstellen. Wenn der Benutzer also einen Beitrag mag, möchten
Sie
die Anzahl der Likes erhöhen Mit diesem Operator können Sie
die Anzahl der s direkt
in der Datenbank erhöhen die Anzahl der s direkt
in der Sie müssen den Beitrag nicht zuerst
wiederholen und
dann die Anzahl
der s erhöhen. Sie können auch einen negativen Wert
übergeben, um den Wert eines
Felds zu verringern Wir haben Männer, was nützlich ist,
wenn Sie
ein Feld aktualisieren möchten , wenn der angegebene Wert kleiner als der
vorhandene Feldwert ist Wir haben einen anderen ähnlichen
Operator, und mit diesem können
wir ein Feld aktualisieren, wenn der angegebene Wert
größer als der
vorhandene Feldwert ist . Wir haben L oder multipliziere, was dem Inkrement ziemlich
ähnlich ist Aber damit können wir den Wert eines
Feldes mit dem angegebenen Betrag
multiplizieren Wir haben festgelegt, was ich Ihnen in dieser Vorlesung zeigen werde
, und damit können wir den Wert eines Feldes
festlegen. Und ähnlich wie
hier haben wir festgelegt, was wir verwenden können, um
das angegebene Feld
aus einem Dokument zu entfernen . Also zurück in
unserem Aktualisierungsobjekt werde
ich
den Set-Operator verwenden. Wir setzen das auf ein Objekt und fügen in diesem Objekt
ein oder mehrere Schlüsselwertpaare hinzu. Nehmen wir also an, wir möchten die Eigenschaft auor
aktualisieren, sie auf Shevin
setzen und wir wollen is
published auf Falls setzen Mit dieser Update-One-Methode können
wir also ein
Dokument direkt in
der Datenbank aktualisieren , ohne es zuerst
abrufen zu müssen Was wir hier erhalten, ist das Ergebnis des
Aktualisierungsvorgangs, kein Kursobjekt Also lassen Sie uns das in Ergebnis umbenennen. Jetzt müssen wir nicht mehr nach
der Existenz eines Kurses suchen. Wir müssen
die Eigenschaften hier nicht aktualisieren und wir müssen sie nicht
explizit speichern . Okay, sehr einfach. Gehen wir also zurück zum Terminal und führen unsere Anwendung erneut aus. Sie können also hier
im Ergebnisobjekt sehen, dass
wir ein Dokument geändert haben. Und hier ist dieses Dokument
in unserer Mongo DV-Datenbank. Der Autor ist also
auf Shiv in gesetzt und was
veröffentlicht ist, ist auf falsch gesetzt.
Wunderschön Jetzt möchten Sie manchmal das Dokument
abrufen
, das aktualisiert wurde. Wenn das der Fall ist, anstelle der Methode
Update One müssen
Sie
anstelle der Methode
Update One Fine
by ID und Update verwenden. Hier müssen
wir also als erstes Argument eine ID
anstelle eines Abfrageobjekts übergeben. Und in ähnlicher Weise übergeben
wir als
zweites Argument unser Update-Objekt. Was wir hier bekommen,
ist ein Kursobjekt. Also werde ich den Autor in
Shevin
ändern und es wird auf True veröffentlicht Lassen Sie uns dieses Programm ausführen
und sehen, was passiert. Also Node, Index oder Js. In Ordnung, hier ist das
Kursdokument, das wir aktualisiert haben. Aber sieh mal, der
Autor ist immer
noch falsch und die Veröffentlichung ist falsch Was wir hier bekommen, ist das Originaldokument, das das Dokument vor
dem Aktualisierungsvorgang ist Dokument vor
dem Aktualisierungsvorgang Wenn Sie
das aktualisierte Dokument erhalten möchten, müssen
Sie eine Option angeben. Wir müssen ein weiteres
Argument an diese Methode übergeben. Hier übergebe ich ein Objekt und setze
die neue Eigenschaft auf true. Und damit bekommen wir
das aktualisierte Dokument, speichern. Jetzt, zurück im Terminal, lassen Sie uns die Anwendung erneut ausführen. Okay, sieh mal, es ist wahr, dass der Autor etwas herausgibt
und veröffentlicht wurde. Mit dieser Methode senden
wir also einen Befehl an Mongo Dev, um das Dokument zu
aktualisieren und zurückzugeben Als Nächstes zeige ich Ihnen,
wie Sie ein Dokument entfernen.
16. Dokumente in Mongoose entfernen: In dieser Vorlesung werde ich Ihnen
zeigen, wie Sie ein Dokument
entfernen Um Zeit zu sparen, hole
ich mir den Port für die Funktion „
Kurs aktualisieren“, dupliziere ihn und benenne ihn dann um, um den
Kurs zu entfernen. Und schließlich, ersetze
das durch Entferne die Geldbörse. Ordnung. Lassen Sie uns nun diese Funktion
implementieren. Um also ein Dokument zu löschen, rufen
wir Kurs auf. Hier haben wir diese
Methode, löschen Sie eine. Diese Methode verwendet einen
Filter oder ein Abfrageobjekt, sodass wir ein
Objekt wie dieses übergeben können. Und mit diesem Abfrageobjekt können
wir ein Dokument
mit einer bestimmten ID finden. Wenn wir nun etwas
Generischeres wie is published senden, auf False
gesetzt ist,
haben wir möglicherweise mehrere Kurse
, die nicht veröffentlicht werden. Bei dieser Methode, einen löschen, wird der
erste gefunden und gelöscht. In dieser Demo
wollen wir das jetzt nicht verwenden. Ich werde das
wieder auf dieses Abfrageobjekt zurücksetzen. Jetzt ähnlich der
Update-One-Methode. Diese Methode gibt ein
Versprechen zurück, sodass wir es entfernen, das Ergebnis
abrufen
und es hier speichern und dann auf der Konsole protokollieren können. Lassen Sie uns nun dieses Programm ausführen, also kein Indexpunkt js. Okay, hier ist unser
Ergebnisobjekt und Sie können sehen, dass
wir ein Dokument gelöscht haben. Wenn Sie nun
mehrere Dokumente löschen möchten, anstatt
eines zu löschen, verwenden Sie delete Manu Diese Methode
gibt auch ein Ergebnisobjekt zurück , das die Anzahl der gelöschten
Dokumente anzeigt Wenn Sie nun das gelöschte
Dokument abrufen möchten, haben
wir hier eine andere Methode. Stellen Sie den Punkt also genau
nach der ID auf und entfernen Sie ihn. Also gibst du den Ausweis hier weiter. Das ist wieder vielversprechend. Wir warten darauf, holen das Ergebnis und speichern es
in diesem Kursobjekt. Deshalb werde ich jetzt diese erste Zeile loben
. Und wir haben diesen Kurs bereits
gelöscht. Lassen Sie uns also dieses Programm ausführen
und sehen, was passiert. Der Knoten ist für uns indexiert. Also bekommen wir NEIN. Wenn wir also keinen
Kurs mit der angegebenen ID haben, gibt
diese Methode NOP zurück