MongoDB on skeematon NoSQL-tietokanta, jossa on joustavat asiakirjarakenteet, toisin kuin SQL-tietokannat. MongoDB: n käyttäminen tietokantana tuo monia etuja helposta skaalauksesta nykyaikaisiin tietokantaominaisuuksiin, kuten tapahtumiin.

MongoDB tukee myös Object Data Modeling (ODM) -kirjastoja, kuten Mongoose. ODM: t hallitsevat tietosuhteita, vahvistavat skeemoja ja muuntavat objektit tietomalleiksi. Ne helpottavat vuorovaikutusta MongoDB-tietokannan kanssa.

Muutamassa vaiheessa opit käyttämään MongoDB: tä NestJS-sovelluksessa NestJS-mongoose-paketin kanssa.

Vaihe 1: Riippuvuuksien asentaminen

Ennen kuin käytät Mongoosea NestJS-sovelluksessasi, sinun on asennettava se alkuperäisen NestJS-paketin kanssa.

Asenna mongoose ja sen alkuperäinen NestJS-paketti käyttämällä npm-pakettien hallinta juoksemalla:

npm asennus @nestjs/mangoose mangoose

Vaihe 2: Yhdistäminen MongoDB: hen

Kun asennus on valmis, siirry omaan app.module.ts tiedosto. Tuo sitten MongooseModule alkaen @pesä/mangoose:

tuonti { MongooseModule } alkaen '@nestjs/mangoose';

Soita seuraavaksi tuontitaulukossa forRootille menetelmä päällä MongooseModule ja välitä MongoDB URI argumenttina:

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

The forRootille menetelmä jakaa tietokantayhteyden kaikkien sovelluksesi moduulien kautta. Se vaatii valinnaisen konfigurointiobjektin; voit oppia siitä lisää osoitteessa Mongoose vaihtoehtojen dokumentaatio.

Vaihe 3: Luo Mongoose-skeema

Kaava on JSON-objekti, joka määrittää tietosi rakenteen ja sisällön. Sinun on luotava sellainen määrittääksesi, kuinka Mongoose tallentaa tietosi MongoDB-tietokantaan.

Luo sovelluksesi juurimoduuliin "skeemoja”-kansioon. Tähän kansioon tallennat kaikki mallitiedostosi.

Sinun sisälläsi skeemoja kansio, luo skeematiedosto ja nimeä se käyttämällä NestJS-nimeämiskäytäntöä (.schema.ts).

Lisää seuraavaksi seuraavat tuonnit mallitiedostoosi:

tuonti { Prop, Schema, SchemaFactory } alkaen "@nestjs/mangoose";
tuonti { Asiakirja } alkaen "mungo";

The Prop decorator merkitsee ominaisuudet, jotka se merkitsee ominaisuuksiksi MongoDB-tietokantaan.

The Kaavio decorator merkitsee luokan, jonka se merkitsee skeemaksi.

The SchemaFactory luokka sisältää staattisia menetelmiä, joita käytetään mallin luomiseen.

Mongoose Asiakirja edustaa yksi-yhteen kartoitusta MongoDB: hen tallennettuihin asiakirjoihin. Tarvitset sitä tyyppimerkinnänä.

Sitten, luo luokka, merkitse se Kaavio koristelija merkitsemään sen Mongoose-skeemaksi ja viemään sen:

@Schema()
viedäluokkaaDemo{}

Seuraavaksi luo ja vie ammattiliittotyyppi luokkasi ja Asiakirja:

viedätyyppi DemoDocument = Demo & Document;

Lisää sitten haluamasi ominaisuudet luokkaan ja merkitse ne Prop sisustusarkkitehti. Voit välittää valinnaisen konfigurointiobjektin Prop sisustaja ja aseta kiinteistö tarpeen mukaan:

@Schema()
viedäluokkaaDemo{
@Prop({ vaaditaan: totta })
ominaisuus_1: merkkijono;
}

The Mungo dokumentaatio kattaa konfigurointiobjektin yksityiskohtaisemmin.

Lopuksi luo ja vie Mongoose-malli sovelluksen kautta SchemaFactory's CreateForClass menetelmä ja anna luokkasi argumenttina:

viedäkonst DemoSchema = SchemaFactory.createForClass (Demo);

Valmiin mallisi pitäisi näyttää tältä:

tuonti { Prop, Schema, SchemaFactory } alkaen '@nestjs/mangoose';
tuonti { Asiakirja } alkaen 'mungo';

viedätyyppi DemoDocument = Demo & Document;

@Schema()
viedäluokkaaDemo{
@Prop({ vaaditaan: totta })
ominaisuus_1: merkkijono;

@Prop({ vaaditaan: totta })
ominaisuus_2: numero;

@Prop()
ominaisuus_3: merkkijono;

@Prop({ vaaditaan: totta })
property_4: boolean;
}

viedäkonst DemoSchema = SchemaFactory.createForClass (Demo);

Vaihe 4: Rekisteröi kaavio

Siirry moduulisi kansioon ja lisää seuraavat tuonnit:

tuonti { MongooseModule } alkaen '@nestjs/mangoose';
tuonti { Demo, DemoSchema } alkaen '../schemas/demo.schema';

Luo seuraavaksi "tuonti”-taulukko sisällä @moduuli sisustusarkkitehti. Soita sitten taulukon sisällä ominaisuus menetelmä päällä MongooseModule.

The ominaisuus menetelmä ottaa joukon Mongoose-malleja. Välitä konfigurointiobjekti a nimi ominaisuus asetetaan skeemaluokkasi nimeksi ja a kaava ominaisuus asetettu luomaasi malliin:

MongooseModule.forFeature([{ nimi: Demo.nimi, malli: DemoSchema }]),

Vaihe 5: Mongoose-mallin ruiskuttaminen

Seuraavaksi sinun on lisättävä Mongoose-malli, jotta voit tehdä kyselyitä tietokannastasi kutsumalla mallin Mongoose-menetelmiä.

Siirry moduulisi palveluluokkaan ja lisää seuraavat tuonnit:

tuonti { Malli } alkaen 'mungo';
tuonti { InjectModel } alkaen '@nestjs/mangoose';
tuonti { Demo, Demo Document } alkaen '../schemas/demo.schema';

Käytä Malli käyttöliittymä mallin tyyppimäärittelynä, mikä antaa sille pääsyn Mongoose-menetelmiin.

The InjectModel decorator ruiskuttaa Mongoose-mallin palveluluokkasi rakentajaan.

Luo seuraavaksi a rakentaja palveluluokkasi sisällä. Sen pitäisi kestää a yksityinen muuttuja argumenttina, a Malli yleisellä tyypillä Demodokumentti. Merkitse yksityinen muuttujasi InjectModel sisustaja ja anna skeemaluokkasi nimi argumenttina:

@Injektoitava()
viedäluokkaaDemoService{
rakentaja(
@InjectModel(Demo.name)
yksityinen demoMalli: Malli<Demodokumentti>,
) {}
}

Voit kysyä MongoDB-tietokannastasi kutsumalla Mongoose-metodeja yksityisessä muuttujassasi (demoModel).

MongoDB: n käytön edut

Vahvan verkkoyhteisönsä ja helppokäyttöisyytensä lisäksi MongoDB tarjoaa korkean tiedon saatavuuden ja vakauden. Se tarjoaa nopeutettua analytiikkaa, tietojen yhdistämistä ja paljon muuta, joten se on ihanteellinen tietokanta projekteillesi.