Integrirajte svojo aplikacijo Node.js z bazo podatkov MongoDB z uporabo Mongoose.

Upravljanje podatkov v zbirki podatkov MongoDB je lahko zahtevno, zlasti ko imamo opravka s kompleksnimi podatkovnimi modeli. MongoDB je baza podatkov brez sheme, kar pomeni, da je mogoče podatke dodajati brez upoštevanja določene strukture. Zaradi te prilagodljivosti je MongoDB idealen za shranjevanje velikih količin podatkov, hkrati pa otežuje upravljanje podatkov.

Mongoose ponuja rešitev na podlagi sheme, ki pomaga zagotoviti, da so podatki, shranjeni v MongoDB, dosledni in pravilno oblikovani. Z Mongoose lahko definirate shemo za svoje podatkovne modele, ki določa strukturo podatkov in pravila, kako naj bodo ti podatki oblikovani. Tukaj boste raziskali, kako uporabljati Mongoose v aplikaciji Express.

Nastavitev vašega razvojnega okolja

Preden uporabite Mongoose, ga morate namestiti kot odvisnost v vašem projektu.

Mongoose lahko namestite tako, da zaženete spodnji ukaz:

npm namestite mongoose

Ko namestite Mongoose v svoj projekt, morate svojo aplikacijo povezati z MongoDB z uporabo Mongoose.

Mongoose se poveže z zbirko podatkov MongoDB z uporabo povezati metoda, ki vzame URI MongoDB kot argument.

Tukaj je primer:

// index.js
konst mungos = zahtevati("mungos")

mongoose.connect("mongodb://127.0.0.1:27017/primer", () =>
konzola.log("Uspešna povezava z bazo podatkov")
);

Zgornji blok kode se poveže z lokalnim primerkom MongoDB in zabeleži sporočilo o uspehu, ko se vaša aplikacija uspešno poveže z MongoDB.

Ustvarjanje modela Mongoose

Model Mongoose je razred v Mongoose, ki temelji na shemi in omogoča interakcijo z zbirko MongoDB.

Shema Mongoose določa strukturo dokumentov, ki jih lahko shranite v zbirko MongoDB in ponuja vmesnik za ustvarjanje, branje, posodabljanje in brisanje dokumentov v tem zbirka.

Ko definirate model Mongoose, definirate shemo za dokumente v tej zbirki, vključno z lastnostmi, njihovimi vrstami in morebitnimi preverjanji.

Tukaj je primer modela Mongoose za a Uporabnik zbirka:

konst mungos = zahtevati("mungos");

konst userSchema = mongoose. Shema({
ime: {
vrsta: Vrvica,
obvezno: [prav, "Ime je obvezno"],
},
E-naslov: {
vrsta: Vrvica,
obvezno: prav,
},
starost: {
vrsta: številka,
potrdi: {
validator: funkcijo (vrednost) {
vrnitev vrednost > 0;
},
sporočilo: () =>"Prosimo, vnesite veljavno starost",
},
},
});

konst Uporabnik = mongoose.model("Uporabnik", uporabniška shema);

modul.exports = uporabnik;

Zgornji blok kode definira shemo Mongoose s tremi lastnostmi: ime, E-naslov, in starost. Vsaka lastnost ima definiran niz pravil, ki jih morate upoštevati pri preslikavi vrednosti v podano polje. Tukaj je razčlenitev pravil:

  • ime: The ime lastnina je a vrvica vrsta označena kot potrebno, kar pomeni, da morate preslikati niz v to polje. Če pustite polje prazno ali vnesete drugo podatkovni tip JavaScript, Mongoose vrže napako.
  • E-naslov: The E-naslov lastnina je a vrvica vrsta označena kot potrebno. Nima drugih pravil preverjanja, vendar bi morali v praksi preveriti, ali je e-poštni naslov pravilen. E-pošto lahko potrdite z uporabo regularnih izrazov ali knjižnice tretjih oseb, kot je class-validator.
  • starost: The starost lastnina je a število tip s pravilom preverjanja po meri, ki preveri, ali je vrednost, preslikana v polje, večja od nič. Če vrednost ne prestane preverjanja, Mongoose vrže napako s sporočilom Vnesite veljavno starost. To polje lahko pustite prazno, ker ni označeno kot potrebno.

Po definiranju sheme kodni blok ustvari model Mongoose, imenovan Uporabnik uporabo mongoose.model() metoda. Ta metoda sprejme dva argumenta: ime modela in shemo za uporabo v dokumentih.

Končno, Uporabnik model izvozi v druge dele vaše aplikacije.

Interakcija z MongoDB z uporabo Mongoose

Ko je vaša aplikacija povezana z bazo podatkov MongoDB in je vaš model ustvarjen ter dostopen drugim delom vaše aplikacije, lahko s svojo bazo podatkov komunicirate z metodami, ki jih ponuja Mongoose.

Za to vadnico boste izvedli Operacije CRUD v bazi podatkov MongoDB.

Opomba: Prepričajte se, da uvozite svoj model Mongoose v kateri koli modul, kjer boste izvajali operacije CRUD.

Na primer:

// router.js

konst Uporabnik = zahtevati("./userModel")

Ustvarjanje dokumenta

Dokument je primerek modela. Obstaja več načinov, kako lahko ustvarite in shranite dokument v MongoDB z uporabo Mongoose.

Najprej lahko ustvarite primerek razreda svojega modela in nato pokličete shraniti metoda na njem.

Na primer:

//Ustvarjanje novega uporabnika
pustiti uporabnik = novo Uporabnik ({
ime,
E-naslov,
starost,
});

//Shranjevanje uporabnika v bazo podatkov
uporabnik
.save()
.potem(() => {
konzola.log("Uporabnik je bil uspešno ustvarjen");
})
.catch((napaka) => {
//obravnava napake
});

Zgornji blok kode ustvari in shrani novo Uporabnik dokument v vašo bazo podatkov MongoDB.

Podatke lahko shranite tudi v bazo podatkov z uporabo ustvariti metoda. The ustvariti metoda instancira vaš model in pokliče shraniti metoda na njem. Z drugimi besedami, združuje obe operaciji prej omenjene tehnike.

Na primer:

User.create({ ime, e-pošta, starost }, (napaka, podatki) => {
če (napaka) metatinovoNapaka("Napaka notranjega strežnika");

konzola.log(`Uporabnik je bil uspešno ustvarjen: ${podatki}`);
});

Zgornji blok kode ustvari novo Uporabnik dokument z lastnostmi, posredovanimi kot argument v ustvariti metoda.

Lahko pa podatke shranite v svojo zbirko podatkov z uporabo vstaviMnogo metoda. Čeprav je ta metoda idealna samo za shranjevanje podatkov v serijah.

Na primer:

User.insertMany(
[
{ime, e-pošta, starost},
{ name_1, email_1, age_1 },
],
(napaka, rezultat) => {
če (napaka) {
//obravnava napake
} drugače {
//Pošlji rezultate
}
}
);

Zgornji blok kode ustvari dva nova dokumenta v Uporabnik zbirka z uporabo matrike, posredovane kot argument v vstaviMnogo metoda.

Branje dokumenta

Do vseh shranjenih dokumentov v zbirki podatkov MongoDB lahko dostopate z uporabo Mongoose najti metoda.

Na primer:

User.find({})
.potem((podatke) => {
konzola.log (podatki);
})
.catch((napaka) => {
//obravnava napake
});

Zgornji kodni blok bo vrnil vse dokumente v Uporabnik zbirka.

Poiščete lahko tudi vse dokumente, ki ustrezajo določeni poizvedbi, tako da posredujete poizvedbo metodi find.

Na primer:

// poiščite vse dokumente, katerih starost je najmanj 18 let
User.find({ starost: { $gte: 18 } })
.potem((podatke) =>konzola.log (podatki))
.catch((napaka) =>konzola.log (napaka));

Zgornji kodni blok bo vrnil vse dokumente z vrednostjo starosti nad 18 v Uporabnik zbirka.

Druga možnost je, da berete posamezne zapise z uporabo findById in posredovanje ID-ja dokumenta kot argumenta ali uporabo findOne metoda in posredovanje filtra kot argumenta.

Na primer:

//findById
User.findById (id, (napaka, rezultat) => {
če (rezultat) konzola.log (rezultat);
če (napaka) konzola.error (napaka)
});

//findOne
User.findOne({ E-naslov: "[email protected]" }).potem((uporabnik) => {
če (!uporabnik) {
//obravnava napake
}
//pošlji odgovor
});

V zgornjem bloku kode je findById metoda vrne dokument z ujemajočim se ID-jem. The findOne metoda vrne prvi dokument z e-pošto [email protected].

Posodabljanje dokumenta

Dokument v MongoDB lahko posodobite z Mongoose z uporabo findByIdAndUpdate metoda. Ta metoda vzame ID in objekt s posodobljenimi podrobnostmi.

Na primer:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
če (doc) {
//Pošlji odgovor
}
če (napaka) {
//obravnava napake
}
});

Zgornji blok kode posodobi dokument, ki ima ID, ki se ujema s posredovanim ID-jem s podanim objektom posodobitve (req.body).

Brisanje dokumenta

Dokument lahko izbrišete v MongoDB z Mongoose z uporabo findByIdAndDelete metoda. Ta metoda vzame ID kot argument in izbriše dokument z ustreznim ID-jem.

Na primer:

User.findByIdAndDelete (id, (napaka, rezultat) => {
če (rezultat) {
//Obravnava rezultata
}
če (napaka) {
//Obravnava napake
}
});

Zgornji blok kode izbriše dokument z danim ID-jem iz vaše baze podatkov MongoDB.

Uporaba Mongoose v vaših hitrih aplikacijah

Ta članek je podal pregled, kako lahko uporabite Mongoose v svoji hitri aplikaciji. Pokriva, kako lahko vzpostavite povezavo z MongoDB, strukturirate in potrdite podatke, shranjene v vaši zbirki podatkov MongoDB, ter izvedete preproste operacije CRUD.

Z uporabo Mongoose v svojih aplikacijah Express lahko poenostavite in racionalizirate interakcije med vašo aplikacijo in zbirko podatkov MongoDB.