A MongoDB egy séma nélküli NoSQL-adatbázis rugalmas dokumentumstruktúrákkal, ellentétben az SQL-adatbázisokkal. A MongoDB adatbázisként való használata számos előnnyel jár, az egyszerű méretezéstől a modern adatbázis-szolgáltatásokig, például a tranzakciókig.

A MongoDB támogatja az objektum adatmodellező (ODM) könyvtárakat is, mint például a Mongoose. Az ODM-ek kezelik az adatkapcsolatokat, érvényesítik a sémákat, és konvertálják az objektumokat adatmodellekké. Megkönnyítik a MongoDB adatbázisokkal való interakciót.

Néhány lépésben megtudhatja, hogyan használhatja a MongoDB-t egy NestJS-alkalmazásban a dedikált NestJS mongoose csomaggal.

1. lépés: Függőségek telepítése

Mielőtt a Mongoose-t a NestJS-alkalmazásban használná, telepítenie kell azt a natív NestJS-csomagjával együtt.

Telepítse a mongoose-t és natív NestJS-csomagját a használatával az npm csomagkezelőt futással:

npm telepítés @nestjs/mongúz mangúz

2. lépés: Csatlakozás a MongoDB-hez

Amikor a telepítés befejeződött, navigáljon a saját oldalára app.module.ts fájlt. Ezután importálja MongooseModule tól től @fészek/mangúz:

instagram viewer
import { MongooseModule } tól től '@nestjs/mongoose';

Ezután az importálási tömbben hívja meg a forRoot módszer bekapcsolva MongooseModule és adja át a MongoDB URI-ját argumentumként:

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

Az forRoot metódus megosztja az adatbázis-kapcsolatot az alkalmazás összes modulján keresztül. Egy opcionális konfigurációs objektumot igényel; cikkben tudhat meg többet róla Mongoose-féle opciók dokumentációja.

3. lépés: Mongoose séma létrehozása

A séma egy JSON-objektum, amely meghatározza az adatok szerkezetét és tartalmát. Létre kell hoznia egyet annak meghatározásához, hogy a Mongoose hogyan tárolja adatait a MongoDB adatbázisban.

Az alkalmazás gyökérmoduljában hozzon létre egy „sémák” mappát. Ebben a mappában tárolhatja az összes sémafájlt.

A tiédben sémák mappát, hozzon létre egy sémafájlt, és nevezze el a NestJS elnevezési konvencióval (.schema.ts).

Ezután adja hozzá a következő importálásokat a sémafájlhoz:

import { Prop, Schema, SchemaFactory } tól től "@nestjs/mongoose";
import { Dokumentum } tól től "indiai menyét";

Az Támaszt A dekorátor az általa jegyzett tulajdonságokat tulajdonságként jelöli meg a MongoDB adatbázisában.

Az Séma dekorátor az általa jegyzett osztályt sémaként jelöli meg.

Az SchemaFactory osztály tartalmazza a modellalkotáshoz használt statikus metódusokat.

A mongúz Dokumentum egy-egy leképezést jelent a MongoDB-ben tárolt dokumentumokhoz. Típusjegyzetként lesz szüksége rá.

Akkor, hozzon létre egy osztályt, jegyezze fel a Séma dekorátor, hogy Mongoose sémaként jelölje meg, és exportálja:

@Séma()
exportosztályDemó{}

Ezután hozzon létre és exportáljon egy szakszervezeti típust az osztályával és Dokumentum:

exporttípus DemoDocument = Demo & Document;

Ezután adja hozzá a kívánt tulajdonságokat az osztályhoz, és jegyezze fel őket a Támaszt lakberendező. Opcionális konfigurációs objektumot adhat át a Támaszt lakberendező és állítsa be az ingatlant igény szerint:

@Séma()
exportosztályDemó{
@Támaszt({ kötelező: igaz })
property_1: string;
}

Az Indiai menyét a dokumentáció részletesebben lefedi a konfigurációs objektumot.

Végül hozzon létre és exportáljon egy Mongoose modellt a következőn keresztül SchemaFactory's CreateForClass metódust, és adja át az osztályát argumentumként:

exportconst DemoSchema = SchemaFactory.createForClass (Demo);

Az elkészült sémának így kell kinéznie:

import { Prop, Schema, SchemaFactory } tól től '@nestjs/mongoose';
import { Dokumentum } tól től 'indiai menyét';

exporttípus DemoDocument = Demo & Document;

@Séma()
exportosztályDemó{
@Támaszt({ kötelező: igaz })
property_1: string;

@Támaszt({ kötelező: igaz })
property_2: szám;

@Támaszt()
property_3: string;

@Támaszt({ kötelező: igaz })
property_4: logikai érték;
}

exportconst DemoSchema = SchemaFactory.createForClass (Demo);

4. lépés: A séma regisztrálása

Keresse meg a modul mappáját, és adja hozzá a következő importálásokat:

import { MongooseModule } tól től '@nestjs/mongoose';
import { Demo, DemoSchema } tól től '../schemas/demo.schema';

Ezután hozzon létre egy „behozatal” tömb belsejében a @modul lakberendező. Ezután a tömbön belül hívja meg a forFeature módszer bekapcsolva MongooseModule.

Az forFeature módszer Mongoose modellek tömbjét veszi figyelembe. Adjon át egy konfigurációs objektumot a név tulajdonságot állítsa be a sémaosztály nevére, és a séma tulajdonság beállítva a létrehozott sémához:

MongooseModule.ForFeature([{ név: Demo.név, séma: DemoSchema }]),

5. lépés: A Mongoose modell befecskendezése

Ezután be kell illesztenie a Mongoose modellt, hogy lehetővé tegye az adatbázis lekérdezését a Mongoose metódusok meghívásával a modellen.

Keresse meg a modul szolgáltatási osztályát, és adja hozzá a következő importálásokat:

import { Modell } tól től 'indiai menyét';
import { InjectModel } tól től '@nestjs/mongoose';
import { Demo, Demo Document } tól től '../schemas/demo.schema';

Használja a Modell interfész a modell típusdefiníciójaként, hozzáférést biztosítva a Mongoose metódusokhoz.

Az InjectModel dekorátor beilleszti a Mongoose modellt a szolgáltatási osztályod konstruktorába.

Ezután hozzon létre a konstruktőr szolgáltatási osztályán belül. Kellene a magán változó mint argumentum, a Modell általános típusával DemoDokumentum. Jelölje meg privát változóját a InjectModel dekorátort, és adja át a sémaosztály nevét argumentumként:

@Injektálható()
exportosztályDemoService{
konstruktőr(
@InjectModel(Demo.name)
privát demoModell: Modell<DemoDokumentum>,
) {}
}

Lekérdezheti MongoDB adatbázisát a Mongoose metódusok meghívásával a privát változójában (demoModel).

A MongoDB használatának előnyei

Az erős online közösség és az egyszerű használat mellett a MongoDB magas szintű adatelérhetőséget és stabilitást biztosít. Gyorsított elemzést, adatösszesítést és egyebeket kínál, így ideális adatbázissá válik projektjei számára.