MongoDB je databáze NoSQL bez schématu s flexibilní strukturou dokumentů, na rozdíl od databází SQL. Použití MongoDB jako databáze přináší mnoho výhod, od snadného škálování až po moderní databázové funkce, jako jsou transakce.

MongoDB také podporuje knihovny objektového datového modelování (ODM), jako je Mongoose. ODM spravují datové vztahy, ověřují schémata a převádějí objekty na datové modely. Usnadňují interakci s databází MongoDB.

V několika krocích se naučíte používat MongoDB v aplikaci NestJS s vyhrazeným balíčkem NestJS mongoose.

Krok 1: Instalace závislostí

Před použitím Mongoose ve své aplikaci NestJS ji musíte nainstalovat spolu s jejím nativním balíčkem NestJS.

Nainstalujte mongoose a jeho nativní balíček NestJS pomocí správce balíčků npm spuštěním:

instalace npm @nestjs/mangusta mangusta

Krok 2: Připojení k MongoDB

Po dokončení instalace přejděte na svůj app.module.ts soubor. Poté importujte MongooseModule z @hnízdo/mongoose:

import { MongooseModule } z '@nestjs/mongoose';

Dále v poli importů zavolejte

instagram viewer
forRoot metoda zapnuta MongooseModule a předejte svůj MongoDB URI jako argument:

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

The forRoot metoda sdílí připojení k databázi prostřednictvím všech modulů ve vaší aplikaci. Vyžaduje volitelný konfigurační objekt; více se o tom můžete dozvědět v Mongoose's dokumentace možností.

Krok 3: Vytvoření schématu Mongoose

Schéma je objekt JSON, který definuje strukturu a obsah vašich dat. Budete jej muset vytvořit, abyste mohli definovat, jak Mongoose ukládá vaše data do databáze MongoDB.

V kořenovém modulu vaší aplikace vytvořte „schémata“. Do této složky budete ukládat všechny soubory schématu.

Uvnitř vašeho schémata složku, vytvořte soubor schématu a pojmenujte jej pomocí konvence pojmenování NestJS (.schema.ts).

Dále do souboru schématu přidejte následující importy:

import { Prop, Schema, SchemaFactory } z "@nestjs/mongoose";
import { Dokument } z "mangusta";

The Podpěra dekoratér označí vlastnosti, které anotuje, jako vlastnost ve vaší databázi MongoDB.

The Schéma dekoratér označí třídu, kterou anotuje, jako schéma.

The SchemaFactory třída obsahuje statické metody používané pro tvorbu modelu.

Mongoose Dokument představuje mapování jedna ku jedné na dokumenty uložené v MongoDB. Budete jej potřebovat jako typovou anotaci.

Pak, vytvořit třídu, označte jej Schéma dekoratér, abyste jej označili jako schéma Mongoose a exportovali jej:

@Schéma()
vývoznítřídaDemo{}

Dále vytvořte a exportujte typ sjednocení s vaší třídou a Dokument:

vývoznítyp DemoDocument = Demo & Document;

Poté přidejte požadované vlastnosti do třídy a opatřete je anotací Podpěra dekoratér. Můžete předat volitelný konfigurační objekt Podpěra dekoratér a nastavte nemovitost podle potřeby:

@Schéma()
vývoznítřídaDemo{
@Podpěra({ Požadované: skutečný })
vlastnost_1: řetězec;
}

The Mangusta dokumentace pokrývá objekt konfigurace podrobněji.

Nakonec vytvořte a exportujte model Mongoose pomocí SchemaFactorys createForClass metodu a předejte svou třídu jako argument:

vývozníkonst DemoSchema = SchemaFactory.createForClass (Demo);

Vaše dokončené schéma by mělo vypadat takto:

import { Prop, Schema, SchemaFactory } z '@nestjs/mongoose';
import { Dokument } z 'mangusta';

vývoznítyp DemoDocument = Demo & Document;

@Schéma()
vývoznítřídaDemo{
@Podpěra({ Požadované: skutečný })
vlastnost_1: řetězec;

@Podpěra({ Požadované: skutečný })
vlastnost_2: číslo;

@Podpěra()
vlastnost_3: řetězec;

@Podpěra({ Požadované: skutečný })
vlastnost_4: booleovský;
}

vývozníkonst DemoSchema = SchemaFactory.createForClass (Demo);

Krok 4: Registrace schématu

Přejděte do složky modulu a přidejte následující importy:

import { MongooseModule } z '@nestjs/mongoose';
import { Demo, DemoSchema } z '../schemas/demo.schema';

Dále vytvořte „dovozypole uvnitř @modul dekoratér. Poté uvnitř pole zavolejte pro Funkce metoda zapnuta MongooseModule.

The pro Funkce metoda využívá řadu modelů Mongoose. Předejte konfigurační objekt s a název vlastnost nastavená na název vaší třídy schématu a a schéma vlastnost nastavená na vaše vytvořené schéma:

MongooseModule.forFeature([{ name: Demo.name, schéma: DemoSchema }]),

Krok 5: Vstřikování modelu Mongoose

Dále budete muset vložit model Mongoose, abyste umožnili dotazování vaší databáze voláním metod Mongoose na modelu.

Přejděte do třídy služeb svého modulu a přidejte následující importy:

import { Modelka } z 'mangusta';
import { InjectModel } z '@nestjs/mongoose';
import { Demo, DemoDocument } z '../schemas/demo.schema';

Použijte Modelka rozhraní jako definice typu pro váš model, což mu dává přístup k metodám Mongoose.

The InjectModel dekoratér vloží model Mongoose do konstruktoru vaší servisní třídy.

Dále vytvořte a konstruktér ve vaší servisní třídě. Mělo by to trvat a soukromé proměnná jako argument, a Modelka s generickým typem Demodokument. Označte svou soukromou proměnnou pomocí InjectModel dekorátor a předejte název vaší třídy schématu jako argument:

@Injekční()
vývoznítřídaDemoService{
konstruktér(
@InjectModel(název demo)
soukromé demoModel: Model<Demodokument>,
) {}
}

Svou databázi MongoDB můžete dotazovat voláním metod Mongoose ve vaší soukromé proměnné (demoModel).

Výhody používání MongoDB

Kromě silné online komunity a snadného použití poskytuje MongoDB vysokou dostupnost a stabilitu dat. Nabízí zrychlenou analýzu, agregaci dat a další, díky čemuž je ideální databází pro vaše projekty.