MongoDB je NoSQL baza podataka bez shema s fleksibilnom strukturom dokumenata, za razliku od SQL baza podataka. Korištenje MongoDB-a kao baze podataka donosi mnoge prednosti, od jednostavnog skaliranja do modernih značajki baze podataka kao što su transakcije.

MongoDB također podržava biblioteke za modeliranje objektnih podataka (ODM) kao što je Mongoose. ODM-ovi upravljaju odnosima podataka, potvrđuju sheme i pretvaraju objekte u podatkovne modele. Oni olakšavaju interakciju s MongoDB bazom podataka.

U nekoliko koraka naučit ćete kako koristiti MongoDB u NestJS aplikaciji s namjenskim paketom NestJS mongoose.

Korak 1: Instaliranje ovisnosti

Prije korištenja Mongoosea u svojoj NestJS aplikaciji, morate ga instalirati zajedno s njegovim izvornim NestJS paketom.

Instalirajte mongoose i njegov nativni NestJS paket pomoću npm upravitelj paketa trčanjem:

npm instalirati @nestjs/mungoose mungos

Korak 2: Povezivanje na MongoDB

Kada instalacija završi, idite na svoju app.module.ts datoteka. Zatim uvoz MongooseModule iz @gnijezdo/mungos:

instagram viewer
uvoz { MongooseModule } iz '@nestjs/mungos';

Zatim, u svom polju uvoza, pozovite zaRoot metoda na MongooseModule i proslijedite svoj MongoDB URI kao argument:

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

The zaRoot metoda dijeli vezu s bazom podataka kroz sve module u vašoj aplikaciji. Potreban je izborni konfiguracijski objekt; možete saznati više o tome u Mongooseov dokumentacija opcija.

Korak 3: Stvaranje Mongoose sheme

Shema je JSON objekt koji definira strukturu i sadržaj vaših podataka. Morat ćete ga izraditi da definirate kako Mongoose pohranjuje vaše podatke u MongoDB bazi podataka.

U korijenskom modulu svoje aplikacije stvorite "sheme” mapa. Ova mapa je mjesto gdje ćete pohraniti sve svoje datoteke sheme.

Unutar vašeg sheme mapu, stvorite datoteku sheme i nazovite je koristeći NestJS konvenciju imenovanja (.shema.ts).

Zatim dodajte sljedeće uvoze u datoteku sheme:

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

The Prop dekorater označava svojstva koja označava kao svojstvo u vašoj MongoDB bazi podataka.

The Shema dekorater označava klasu koju označava kao shemu.

The SchemaFactory klasa sadrži statičke metode koje se koriste za kreiranje modela.

Mungos Dokument predstavlja preslikavanje jedan na jedan na dokumente pohranjene u MongoDB. Trebat će vam kao oznaka tipa.

Zatim, stvoriti klasu, označite ga s Shema dekorater da ga označite kao Mongoose shemu i izvezete:

@Shema()
izvozrazredaDemo{}

Zatim stvorite i izvezite vrstu unije sa svojom klasom i Dokument:

izvoztip DemoDocument = Demo & Dokument;

Zatim dodajte željena svojstva klasi i označite ih s Prop dekorater. Možete proslijediti neobavezni konfiguracijski objekt na Prop dekorater i postavite svojstvo prema potrebi:

@Shema()
izvozrazredaDemo{
@Prop({ potrebno: pravi })
svojstvo_1: niz;
}

The Mungos dokumentacija detaljnije pokriva konfiguracijski objekt.

Konačno, stvorite i izvezite Mongoose model putem SchemaFactory’s createForClass metodu i proslijedite svoju klasu kao argument:

izvozkonst DemoSchema = SchemaFactory.createForClass (Demo);

Vaša dovršena shema trebala bi izgledati ovako:

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

izvoztip DemoDocument = Demo & Dokument;

@Shema()
izvozrazredaDemo{
@Prop({ potrebno: pravi })
svojstvo_1: niz;

@Prop({ potrebno: pravi })
svojstvo_2: broj;

@Prop()
svojstvo_3: niz;

@Prop({ potrebno: pravi })
svojstvo_4: Booleov;
}

izvozkonst DemoSchema = SchemaFactory.createForClass (Demo);

Korak 4: Registracija sheme

Dođite do mape svog modula i dodajte sljedeće uvoze:

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

Zatim stvorite "uvozi” niz unutar @modul dekorater. Zatim, unutar niza, pozovite zaFeature metoda na MongooseModule.

The zaFeature metoda uzima niz Mongoose modela. Proslijedite konfiguracijski objekt s a Ime svojstvo postavljeno na naziv vaše klase sheme, i a shema svojstvo postavljeno na vašu stvorenu shemu:

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

Korak 5: Ubrizgavanje Mongoose modela

Zatim ćete morati ubaciti Mongoose model kako biste omogućili postavljanje upita vašoj bazi podataka pozivanjem Mongoose metoda na modelu.

Dođite do servisne klase svog modula i dodajte sljedeće uvoze:

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

Koristiti Model sučelje kao definicija tipa za vaš model, dajući mu pristup Mongoose metodama.

The InjectModel dekorater ubacuje model Mongoose u konstruktor vaše klase usluge.

Zatim stvorite a konstruktor unutar vaše klase usluge. Trebalo bi uzeti a privatni varijabla kao argument, a Model s generičkim tipom DemoDocument. Svoju privatnu varijablu označite s InjectModel dekorater i proslijedite ime svoje klase sheme kao argument:

@Injekcioni()
izvozrazredaDemoService{
konstruktor(
@InjectModel(Demo.name)
privatni demoModel: Model<DemoDocument>,
) {}
}

Možete postaviti upit svojoj MongoDB bazi podataka pozivanjem Mongoose metoda na vašoj privatnoj varijabli (demoModel).

Prednosti korištenja MongoDB-a

Osim snažne online zajednice i jednostavnosti korištenja, MongoDB pruža visoku dostupnost i stabilnost podataka. Nudi ubrzanu analitiku, prikupljanje podataka i više, što ga čini idealnom bazom podataka za vaše projekte.