MongoDB to pozbawiona schematów baza danych NoSQL z elastycznymi strukturami dokumentów, w przeciwieństwie do baz danych SQL. Używanie MongoDB jako bazy danych przynosi wiele korzyści, od łatwego skalowania po nowoczesne funkcje bazy danych, takie jak transakcje.

MongoDB obsługuje również biblioteki modelowania danych obiektowych (ODM), takie jak Mongoose. ODM zarządzają relacjami danych, weryfikują schematy i konwertują obiekty na modele danych. Ułatwiają interakcję z bazą danych MongoDB.

W kilku krokach dowiesz się, jak korzystać z MongoDB w aplikacji NestJS z dedykowanym pakietem Mongoose NestJS.

Krok 1: Instalowanie zależności

Przed użyciem Mongoose w swojej aplikacji NestJS, musisz zainstalować ją wraz z natywnym pakietem NestJS.

Zainstaluj mangusta i jej natywny pakiet NestJS za pomocą menedżer pakietów npm biegiem:

instalacja npm @nestjs/mangusta mangusta

Krok 2: Łączenie z MongoDB

Po zakończeniu instalacji przejdź do swojego app.moduł.ts plik. Następnie zaimportuj MongooseModuł z @gniazdo/mangusta:

instagram viewer
import { MongooseModuł } z '@nestjs/mangusta';

Następnie w tablicy importów wywołaj dla root metoda włączona MongooseModuł i przekaż swój URI MongoDB jako argument:

import: [MongooseModule.forRoot (process.env. MONGODB_URI)],

The dla root Metoda udostępnia połączenie z bazą danych przez wszystkie moduły w aplikacji. Pobiera opcjonalny obiekt konfiguracyjny; możesz dowiedzieć się więcej na ten temat w Mangusty dokumentacja opcji.

Krok 3: Tworzenie schematu Mongoose

Schemat to obiekt JSON, który definiuje strukturę i zawartość danych. Musisz go utworzyć, aby określić, w jaki sposób Mongoose przechowuje Twoje dane w bazie danych MongoDB.

W module głównym aplikacji utwórz „schematy" teczka. W tym folderze będą przechowywane wszystkie pliki schematów.

Wewnątrz twojego schematy folderu, utwórz plik schematu i nazwij go używając konwencji nazewnictwa NestJS (.schemat.ts).

Następnie dodaj następujące importy do pliku schematu:

import { Rekwizyt, Schemat, Fabryka Schematu } z "@nestjs/mangusta";
import { Dokument } z "mangusta";

The Rekwizyt dekorator oznacza właściwości, które opisuje jako właściwość w bazie danych MongoDB.

The Schemat dekorator oznacza klasę, którą opisuje jako schemat.

The SchematFabryka klasa zawiera statyczne metody służące do tworzenia modeli.

Mongusta Dokument reprezentuje mapowanie jeden-do-jednego na dokumenty przechowywane w MongoDB. Będzie potrzebny jako adnotacja typu.

Następnie, stworzyć klasę, dodaj do niego adnotację Schemat dekorator, aby oznaczyć go jako schemat Mongoose i wyeksportować go:

@Schemat()
eksportklasaPróbny{}

Następnie utwórz i wyeksportuj typ unii ze swoją klasą i Dokument:

eksportrodzaj DemoDocument = Demo i dokument;

Następnie dodaj żądane właściwości do klasy i dodaj do nich adnotacje za pomocą Rekwizyt dekorator. Możesz przekazać opcjonalny obiekt konfiguracyjny do Rekwizyt dekorator i ustaw właściwość zgodnie z wymaganiami:

@Schemat()
eksportklasaPróbny{
@Rekwizyt({ wymagany: PRAWDA })
właściwość_1: ciąg;
}

The Mangusta Dokumentacja zawiera szczegółowy opis obiektu konfiguracyjnego.

Na koniec utwórz i wyeksportuj model Mongoose za pomocą SchematFabryka's utwórz dla klasy metody i przekaż swoją klasę jako argument:

eksportstały DemoSchema = SchemaFactory.createForClass (Demo);

Twój ukończony schemat powinien wyglądać tak:

import { Rekwizyt, Schemat, Fabryka Schematu } z '@nestjs/mangusta';
import { Dokument } z 'mangusta';

eksportrodzaj DemoDocument = Demo i dokument;

@Schemat()
eksportklasaPróbny{
@Rekwizyt({ wymagany: PRAWDA })
właściwość_1: ciąg;

@Rekwizyt({ wymagany: PRAWDA })
właściwość_2: liczba;

@Rekwizyt()
właściwość_3: ciąg;

@Rekwizyt({ wymagany: PRAWDA })
właściwość_4: logiczne;
}

eksportstały DemoSchema = SchemaFactory.createForClass (Demo);

Krok 4: Rejestracja schematu

Przejdź do folderu swojego modułu i dodaj następujące importy:

import { MongooseModuł } z '@nestjs/mangusta';
import { Demo, Schemat demonstracyjny } z „../schematy/schemat.demo”;

Następnie utwórz „import” tablica wewnątrz @moduł dekorator. Następnie wewnątrz tablicy wywołaj dla funkcji metoda włączona MongooseModuł.

The dla funkcji Metoda przyjmuje tablicę modeli Mongoose. Przekaż obiekt konfiguracyjny z Nazwa właściwość ustawiona na nazwę twojej klasy schematu i a schemat zestaw właściwości do utworzonego schematu:

MongooseModuł.dla funkcji([{ nazwa: Demo.name, schemat: DemoSchema }]),

Krok 5: Wstrzykiwanie modelu mangusty

Następnie musisz wstrzyknąć model Mongoose, aby umożliwić wysyłanie zapytań do bazy danych, wywołując metody Mongoose w modelu.

Przejdź do klasy usług swojego modułu i dodaj następujące importy:

import { Model } z 'mangusta';
import { Model wstrzykiwania } z '@nestjs/mangusta';
import { Demo, DemoDokument } z „../schematy/schemat.demo”;

Użyj Model interfejs jako definicję typu dla Twojego modelu, dając mu dostęp do metod Mongoose.

The InjectModel dekorator wstrzykuje model Mongoose do konstruktora klasy usług.

Następnie utwórz konstruktor wewnątrz Twojej klasy usług. Powinno to zająć prywatny zmienna jako argument, a Model z ogólnym typem DemoDokument. Zanotuj swoją zmienną prywatną za pomocą InjectModel dekorator i przekaż nazwę klasy schematu jako argument:

@do wstrzykiwania()
eksportklasaUsługa demonstracyjna{
konstruktor(
@InjectModel(Nazwa.dem.)
prywatne demoModel: Model<DemoDokument>,
) {}
}

Możesz wysłać zapytanie do bazy danych MongoDB, wywołując metody Mongoose na swojej prywatnej zmiennej (demoModel).

Zalety korzystania z MongoDB

Oprócz silnej społeczności internetowej i łatwości użytkowania, MongoDB zapewnia wysoką dostępność i stabilność danych. Oferuje przyspieszone analizy, agregację danych i nie tylko, dzięki czemu jest idealną bazą danych dla Twoich projektów.