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öä (
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.