NestJs verwendet Mongoose zum Betrieb von MongoDB

NestJs verwendet Mongoose zum Betrieb von MongoDB

Ich habe vor Kurzem angefangen, das NestJs-Framework zu lernen. Der Lernaufwand ist viel höher als bei anderen Frameworks.
Die Registrierungskonfiguration ist relativ komplex und anfangs etwas verwirrend, was aber auch auf die im Vergleich zu anderen Frameworks stärker standardisierte und strengere Natur des Frameworks zurückzuführen ist. Gewährleistet den stabilen und robusten Einsatz großer Projekte!

Beim Erlernen des Node-Grundgerüsts Express und Koa. Datenbankoperationen wurden schon immer durch das Schreiben von SQL-Anweisungen implementiert. Schreiben Sie alles, was nötig ist. Dies erscheint sehr starr und unflexibel. Später erfuhr ich, dass NestJs eine OOP-orientierte Programmierung ist (NestJs kann TypeScript verwenden, das ebenfalls OOP-orientiert ist), und dann wurde mir klar, dass Datenbankoperationen in Form von Objekten ausgedrückt werden können. Jede Tabelle (Schema) in der Datenbank kann im Nest-Framework als Objekt betrachtet werden. Dies macht Datenbankoperationen sehr flexibel

Beispiel: (Dies ist die Struktur einer beliebigen Tabelle)

Bildbeschreibung hier einfügen

Es kann als Objekt in NestJs angezeigt werden

Bildbeschreibung hier einfügen

Dadurch ist die Bearbeitung der einzelnen Tabellen in der Datenbank sehr einfach.
Hier nehmen wir den Link MongoDB-Vorgang als Beispiel

Verwenden Sie Mungo gemäß der offiziellen Dokumentation

Installieren Sie zunächst die erforderlichen Abhängigkeiten

npm install --save @nestjs/mongoose mongoose

Sie können einen Taobao-Spiegel hinzufügen:

–registry=https://registry.npm.taobao.org

Ich bin darin sehr gut geworden und es ist sehr bequem zu verwenden. Die Download-Geschwindigkeit wird viel schneller sein

Nach Abschluss der Installation fügen wir die Konfiguration zu app.module.ts hinzu

app.module.ts

Bildbeschreibung hier einfügen

Fügen Sie die entsprechende Konfiguration in den Importen hinzu:[]

MongooseModule.forRoot('mongodb://localhost/test')
//Folgendes ist der Speicherort von MongoDB (je nach Bedarf)
Fügen Sie entsprechende Abhängigkeiten hinzu: import { Module } von '@nestjs/common';
importiere { MongooseModule } von '@nestjs/mongoose';

Nach dem Speichern können Sie es in der Konsole sehen
DeprecationWarning: Der aktuelle URL-String-Parser ist veraltet und wird in einer zukünftigen Version entfernt. Um den neuen Parser zu verwenden, übergeben Sie die Option { useNewUrlParser: true } an MongoClient.connect
So ein ähnlicher Satz. Dies bedeutet, dass die Verknüpfung erfolgreich war.

Dann fügen Sie das Modell ein (Schema)
Erstellen Sie einen Schemaordner in Ihrem entsprechenden Modulordner. Erstellen Sie xx.schema.ts

Meins ist beispielsweise users/schemas/users.schema.ts

importiere * als Mungo von 'Mungo'

exportiere const UserSchema = neues mongoose.Schema(
  {
    id: Nummer,
    Name: Zeichenfolge,
    Einführung: String,
    Headurl: Zeichenfolge,
    Bigurl: Zeichenfolge,
    Benutzername: String,
    Passwort: String,
  },
  { Sammlung: 'Musiker', Versionsschlüssel: false },
)

Dies entspricht der Tabellenstruktur in der obigen Abbildung (Sammlung: kann in MongoDB als Tabelle betrachtet werden.)
Als nächstes fügen Sie die Konfiguration im entsprechenden users.module.ts-Modul hinzu

importiere { Modul } von '@nestjs/common';
importiere { MongooseModule, getModelToken } von '@nestjs/mongoose';
importiere { UsersController } aus './users.controller';
importiere { UsersService } aus './services/users.service';
importiere { UserSchema } aus './schemas/users.schemas';

@Modul({
  Importe: [
  //Hier Konfiguration hinzufügen. Entsprechendes Importmodul (achten Sie auf die Klammerstruktur im Inneren, lassen Sie sich nicht davon abhalten. Ich bin hier lange hängen geblieben)
    MongooseModule.forFeature([
      { Name: 'Benutzer', Schema: UserSchema }
    ])
  ],
  Controller: [UsersController],
  Anbieter:
    BenutzerService,
   ],
})
exportiere Klasse BenutzerModul {}

Nach dieser Konfiguration. Wir können auf der Serviceseite tätig sein

Service => Benutzer/Benutzer.service.ts

Machen wir eine Suche zum Testen

importiere { Model } von 'Mongoose';
importiere { Injectable } von '@nestjs/common';
importiere { InjectModel } von '@nestjs/mongoose';
importiere { Benutzer } von '../interface/users.interface';
importiere { IUserService } von '../interface/user-service.interface';


@Injizierbar()
export Klasse UsersService implementiert IUserService {

  Konstruktor(@InjectModel('Benutzer') privates schreibgeschütztes Benutzermodell: Modell<Benutzer>) {}
  
  private statische Benutzer:Benutzer[] = [ ]

  async findAll():Versprechen<Benutzer[]>{
    //Benutzerservice.Benutzer zurückgeben
    Rückgabe: warte auf dieses Benutzermodell.find({}).
    //(Hier testen wir, um alles zu finden)
  }

}

Controller => Benutzer/Benutzer.controller.ts

@Controller('Benutzer')
exportiere Klasse UsersController {
  Konstruktor (privater schreibgeschützter Benutzerdienst: Benutzerdienst) { }

@Get('alles abrufen')
  // @UseGuards(AuthGuard('jwt'))
  async findAll():Promise<Benutzer[]> {
    zurückgeben, warte auf this.userservice.findAll()
  }
}

Wir öffnen eine Schnittstelle. Hier wird 3001 in main.ts angepasst. Ändern Sie es entsprechend Ihrer eigenen Situation und dann können wir darauf zugreifen
http://localhost:3001/users/getall

Bildbeschreibung hier einfügen

Habe das Ergebnis

Bildbeschreibung hier einfügen

Die Ausgabe ist abgeschlossen. Andere Vorgänge werden nach ähnlichen Schritten durchgeführt.

Dies ist das Ende dieses Artikels über die Verwendung von Mongoose mit NestJs zum Betreiben von MongoDB. Weitere Informationen zum Betreiben von MongoDB mit NestJs finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiel einer Autorisierungsüberprüfungsmethode von Nest.js
  • Detaillierte Erläuterung der Konfiguration und Serialisierung von Nest.js-Umgebungsvariablen
  • So verwenden Sie nest.js, um mehrere statische Verzeichnisse mit Express bereitzustellen

<<:  Detaillierte Erklärung der Schlüsselwörter und reservierten Wörter in MySQL 5.7

>>:  Eine kurze Diskussion über die vorläufige Praxis der Docker-Container-Verbindung

Artikel empfehlen

Lassen Sie uns im Detail darüber sprechen, wie der NodeJS-Prozess beendet wird

Inhaltsverzeichnis Vorwort Aktiver Rückzug Ausnah...

Detaillierte Erklärung der CSS-Zeilenhöhe und -Höhe

Als ich kürzlich an CSS-Schnittstellen arbeitete,...

Node.js gibt je nach Anforderungspfad unterschiedliche Daten zurück.

Inhaltsverzeichnis 1. Lernen Sie, je nach Anforde...

Beispielcode von Vue + Element UI zur Realisierung der Player-Funktion

Die Anzeige ohne Effektbild ist nur leeres Gerede...

So legen Sie den Standardwert für den Datums-/Uhrzeittyp in MySQL fest

Beim Ändern des Standarddatums-/Uhrzeitwerts über...

Detaillierte Analyse der HTML-Semantik und der zugehörigen Front-End-Frameworks

Über Semantik Die Semantik ist die Lehre von der ...

Fehler beim reduzierten Tabellenzeilenelement

Nehmen wir ein Beispiel: Der Code ist sehr einfach...

Detailliertes Tutorial zum Erstellen eines Gitlab-Servers auf CentOS8.1

Über den Unterschied zwischen Gitlab und Github m...

Vollständige Schritte zum Bereitstellen von Confluence mit Docker

Confluence ist kostenpflichtig, kann aber für die...