MongoDB ist eine schemalose NoSQL-Datenbank mit flexiblen Dokumentstrukturen, im Gegensatz zu SQL-Datenbanken. Die Verwendung von MongoDB als Datenbank bringt viele Vorteile, von der einfachen Skalierung bis hin zu modernen Datenbankfunktionen wie Transaktionen.
MongoDB unterstützt auch Bibliotheken zur Objektdatenmodellierung (ODM) wie Mongoose. ODMs verwalten Datenbeziehungen, validieren Schemas und konvertieren Objekte in Datenmodelle. Sie erleichtern die Interaktion mit einer MongoDB-Datenbank.
In wenigen Schritten lernen Sie, wie Sie MongoDB in einer NestJS-Anwendung mit dem dedizierten NestJS-Mongoose-Paket verwenden.
Schritt 1: Installieren von Abhängigkeiten
Bevor Sie Mongoose in Ihrer NestJS-Anwendung verwenden, müssen Sie es zusammen mit seinem nativen NestJS-Paket installieren.
Installieren Sie Mongoose und sein natives NestJS-Paket mit der npm-Paketmanager durch Laufen:
npm installieren @nestjs/Mungo Mungo
Schritt 2: Verbindung mit MongoDB herstellen
Wenn die Installation abgeschlossen ist, navigieren Sie zu Ihrer
app.module.ts Datei. Dann importieren MongooseModul aus @nest/mungo:importieren { MungoModul } aus '@nestjs/mongoose';
Rufen Sie als Nächstes in Ihrem imports-Array die fürRoot Methode an MongooseModul und übergeben Sie Ihren MongoDB-URI als Argument:
Importe: [MongooseModule.forRoot (process.env. MONGODB_URI)],
Das fürRoot -Methode teilt die Datenbankverbindung mit allen Modulen in Ihrer Anwendung. Es nimmt ein optionales Konfigurationsobjekt; mehr dazu erfährst du in Mungos Optionen Dokumentation.
Schritt 3: Erstellen eines Mongoose-Schemas
Ein Schema ist ein JSON-Objekt, das die Struktur und den Inhalt Ihrer Daten definiert. Sie müssen einen erstellen, um zu definieren, wie Mongoose Ihre Daten in der MongoDB-Datenbank speichert.
Erstellen Sie im Stammmodul Ihrer Anwendung ein „Schemata" Mappe. In diesem Ordner speichern Sie alle Ihre Schemadateien.
In Ihrem Schemata Ordner, erstellen Sie eine Schemadatei und benennen Sie sie mit der NestJS-Benennungskonvention (
Fügen Sie als Nächstes die folgenden Importe zu Ihrer Schemadatei hinzu:
importieren { Prop, Schema, SchemaFactory } aus "@nestjs/mongoose";
importieren { Dokumentieren } aus "Mungo";
Das Stütze decorator markiert Eigenschaften, die er kommentiert, als Eigenschaft in Ihrer MongoDB-Datenbank.
Das Schema decorator markiert die annotierte Klasse als Schema.
Das SchemaFactory Klasse enthält statische Methoden, die für die Modellerstellung verwendet werden.
Der Mungo Dokumentieren stellt eine Eins-zu-Eins-Zuordnung zu Dokumenten dar, wie sie in MongoDB gespeichert sind. Sie benötigen es als Typanmerkung.
Dann, Klasse erstellen, kommentieren Sie es mit dem Schema decorator, um es als Mongoose-Schema zu markieren, und exportieren Sie es:
@Schema()
ExportKlasseDemo{}
Erstellen und exportieren Sie als Nächstes einen Union-Typ mit Ihrer Klasse und Dokumentieren:
ExportTyp DemoDocument = Demo & Dokument;
Fügen Sie dann Ihre gewünschten Eigenschaften zur Klasse hinzu und kommentieren Sie sie mit dem Stütze Dekorateur. Sie können ein optionales Konfigurationsobjekt an übergeben Stütze decorator und legen Sie die Eigenschaft wie gewünscht fest:
@Schema()
ExportKlasseDemo{
@Stütze({ erforderlich: Stimmt })
Eigenschaft_1: Zeichenkette;
}
Das Mungo Dokumentation behandelt das Konfigurationsobjekt ausführlicher.
Erstellen und exportieren Sie abschließend ein Mongoose-Modell über die SchemaFactory's createForClass -Methode und übergeben Sie Ihre Klasse als Argument:
Exportkonst DemoSchema = SchemaFactory.createForClass (Demo);
Ihr fertiges Schema sollte wie folgt aussehen:
importieren { Prop, Schema, SchemaFactory } aus '@nestjs/mongoose';
importieren { Dokumentieren } aus 'Mungo';ExportTyp DemoDocument = Demo & Dokument;
@Schema()
ExportKlasseDemo{
@Stütze({ erforderlich: Stimmt })
Eigenschaft_1: Zeichenkette;@Stütze({ erforderlich: Stimmt })
Eigenschaft_2: Zahl;@Stütze()
Eigenschaft_3: Zeichenkette;@Stütze({ erforderlich: Stimmt })
Eigenschaft_4: boolesch;
}
Exportkonst DemoSchema = SchemaFactory.createForClass (Demo);
Schritt 4: Registrierung des Schemas
Navigieren Sie zum Ordner Ihres Moduls und fügen Sie die folgenden Importe hinzu:
importieren { MungoModul } aus '@nestjs/mongoose';
importieren { Demo, DemoSchema } aus '../schemas/demo.schema';
Erstellen Sie als Nächstes ein „Importe” Array innerhalb der @Modul Dekorateur. Rufen Sie dann innerhalb des Arrays die auf fürFeature Methode an MongooseModul.
Das fürFeature -Methode nimmt eine Reihe von Mongoose-Modellen auf. Übergeben Sie ein Konfigurationsobjekt mit a Name -Eigenschaft auf den Namen Ihrer Schemaklasse festgelegt ist, und a Schema Eigenschaft auf Ihr erstelltes Schema gesetzt:
MongooseModul.fürFunktion([{ Name: Demo.name, Schema: DemoSchema }]),
Schritt 5: Injektion des Mongoose-Modells
Als Nächstes müssen Sie das Mongoose-Modell einfügen, um das Abfragen Ihrer Datenbank zu ermöglichen, indem Sie Mongoose-Methoden für das Modell aufrufen.
Navigieren Sie zur Serviceklasse Ihres Moduls und fügen Sie die folgenden Importe hinzu:
importieren { Modell } aus 'Mungo';
importieren { InjectModel } aus '@nestjs/mongoose';
importieren { Demo, DemoDokument } aus '../schemas/demo.schema';
Verwenden Sie die Modell interface als Typdefinition für Ihr Modell, wodurch es Zugriff auf Mongoose-Methoden erhält.
Das InjectModel decorator injiziert das Mongoose-Modell in den Konstruktor Ihrer Serviceklasse.
Als nächstes erstellen Sie eine Konstrukteur innerhalb Ihrer Serviceklasse. Es sollte eine dauern Privatgelände Variable als Argument, a Modell mit einem generischen Typ von DemoDokument. Kommentieren Sie Ihre private Variable mit dem InjectModel decorator und übergeben Sie Ihren Schema-Klassennamen als Argument:
@ Injizierbar()
ExportKlasseDemoService{
Konstrukteur(
@InjectModel(Demo.name)
private DemoModell: Modell<DemoDokument>,
) {}
}
Sie können Ihre MongoDB-Datenbank abfragen, indem Sie Mongoose-Methoden für Ihre private Variable (DemoModell).
Vorteile der Verwendung von MongoDB
Neben seiner starken Online-Community und Benutzerfreundlichkeit bietet MongoDB eine hohe Datenverfügbarkeit und -stabilität. Es bietet beschleunigte Analysen, Datenaggregation und mehr und ist damit die ideale Datenbank für Ihre Projekte.