MongoDB je baza podatkov NoSQL brez sheme s prilagodljivimi strukturami dokumentov, za razliko od baz podatkov SQL. Uporaba MongoDB kot baze podatkov prinaša številne prednosti, od enostavnega prilagajanja do sodobnih funkcij baze podatkov, kot so transakcije.

MongoDB podpira tudi knjižnice za modeliranje objektnih podatkov (ODM), kot je Mongoose. ODM-ji upravljajo podatkovne odnose, preverjajo sheme in pretvarjajo objekte v podatkovne modele. Omogočajo lažjo interakcijo z bazo podatkov MongoDB.

V nekaj korakih se boste naučili uporabljati MongoDB v aplikaciji NestJS z namenskim paketom NestJS mongoose.

1. korak: Namestitev odvisnosti

Preden uporabite Mongoose v aplikaciji NestJS, ga morate namestiti skupaj z izvornim paketom NestJS.

Namestite mongoose in njegov izvorni paket NestJS z uporabo upravitelj paketov npm s tekom:

namestitev npm @nestjs/mungoose mungos

2. korak: Povezovanje z MongoDB

Ko je namestitev končana, se pomaknite do svojega app.module.ts mapa. Nato uvozite MongooseModule od @gnezdo/mungos:

instagram viewer
uvoz { MongooseModule } od '@nestjs/mongoose';

Nato v matriki uvozov pokličite zaRoot metoda na MongooseModule in posredujte svoj MongoDB URI kot argument:

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

The zaRoot metoda deli povezavo z bazo podatkov prek vseh modulov v vaši aplikaciji. Potrebuje izbirni konfiguracijski objekt; več o tem lahko izveste v Mongosov dokumentacijo o možnostih.

3. korak: Ustvarjanje sheme Mongoose

Shema je objekt JSON, ki definira strukturo in vsebino vaših podatkov. Ustvariti ga boste morali, da določite, kako Mongoose shranjuje vaše podatke v zbirko podatkov MongoDB.

V korenskem modulu vaše aplikacije ustvarite »sheme” mapo. V to mapo boste shranili vse svoje datoteke sheme.

Znotraj vašega sheme mapo, ustvarite datoteko sheme in jo poimenujte z uporabo konvencije o poimenovanju NestJS (.schema.ts).

Nato v datoteko sheme dodajte naslednje uvoze:

uvoz {Prop, Schema, SchemaFactory} od "@nestjs/mongoose";
uvoz {Dokument} od "mungos";

The Prop dekorater označi lastnosti, ki jih označi kot lastnost v vaši bazi podatkov MongoDB.

The Shema dekorater označi razred, ki ga označuje, kot shemo.

The SchemaFactory vsebuje statične metode, ki se uporabljajo za ustvarjanje modela.

Mongos Dokument predstavlja preslikavo ena proti ena v dokumente, kot so shranjeni v MongoDB. Potrebovali ga boste kot pripis tipa.

potem, ustvarite razred, označite z Shema dekoraterja, da jo označite kot shemo Mongoose, in jo izvozite:

@Shema()
izvozrazredDemo{}

Nato ustvarite in izvozite tip unije s svojim razredom in Dokument:

izvozvrsta DemoDocument = Demo & Dokument;

Nato dodajte želene lastnosti v razred in jih označite z Prop dekorater. Izbirni konfiguracijski objekt lahko posredujete v Prop dekorater in nastavite lastnost, kot je potrebno:

@Shema()
izvozrazredDemo{
@Prop({ obvezno: prav })
lastnost_1: niz;
}

The mungos dokumentacija podrobneje pokriva konfiguracijski objekt.

Končno ustvarite in izvozite model Mongoose prek SchemaFactory’s createForClass metodo in posredujte svoj razred kot argument:

izvozkonst DemoSchema = SchemaFactory.createForClass (Demo);

Vaša dokončana shema bi morala izgledati takole:

uvoz {Prop, Schema, SchemaFactory} od '@nestjs/mongoose';
uvoz {Dokument} od 'mungos';

izvozvrsta DemoDocument = Demo & Dokument;

@Shema()
izvozrazredDemo{
@Prop({ obvezno: prav })
lastnost_1: niz;

@Prop({ obvezno: prav })
lastnost_2: število;

@Prop()
lastnost_3: niz;

@Prop({ obvezno: prav })
lastnost_4: logično;
}

izvozkonst DemoSchema = SchemaFactory.createForClass (Demo);

4. korak: Registracija sheme

Pomaknite se do mape vašega modula in dodajte naslednje uvoze:

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

Nato ustvarite »uvoz” znotraj @modul dekorater. Nato znotraj matrike pokličite forFeature metoda na MongooseModule.

The forFeature Metoda vključuje niz modelov Mongoose. Predajte konfiguracijski objekt z a ime lastnost, nastavljena na ime vašega razreda sheme, in a shema lastnost, nastavljena na vašo ustvarjeno shemo:

MongooseModule.forFeature([{ ime: Demo.name, shema: DemoSchema }]),

5. korak: Vbrizgavanje modela Mongoose

Nato boste morali vnesti model Mongoose, da omogočite poizvedovanje po vaši bazi podatkov s klicanjem metod Mongoose na modelu.

Pomaknite se do storitvenega razreda vašega modula in dodajte naslednje uvoze:

uvoz { Model } od 'mungos';
uvoz {InjectModel} od '@nestjs/mongoose';
uvoz { Demo, DemoDocument } od '../schemas/demo.schema';

Uporabi Model vmesnik kot definicijo tipa za vaš model, ki mu omogoča dostop do metod Mongoose.

The InjectModel dekorater vstavi model Mongoose v konstruktor vašega storitvenega razreda.

Nato ustvarite a konstruktor znotraj vašega storitvenega razreda. Treba bi bilo a zasebno spremenljivka kot argument, a Model z generično vrsto DemoDocument. Svojo zasebno spremenljivko označite z InjectModel dekorater in posredujte ime razreda sheme kot argument:

@Za injiciranje()
izvozrazredDemoService{
konstruktor(
@InjectModel(Demo.name)
zasebni demoModel: Model<DemoDocument>,
) {}
}

Po svoji zbirki podatkov MongoDB lahko poizvedujete tako, da pokličete metode Mongoose na vaši zasebni spremenljivki (demoModel).

Prednosti uporabe MongoDB

Poleg močne spletne skupnosti in enostavne uporabe MongoDB zagotavlja visoko razpoložljivost in stabilnost podatkov. Ponuja pospešeno analitiko, združevanje podatkov in še več, zaradi česar je idealna zbirka podatkov za vaše projekte.