Integreerige oma Node.js-rakendus Mongoose andmebaasiga Mongoose.
Andmete haldamine MongoDB andmebaasis võib olla keeruline, eriti kui tegemist on keerukate andmemudelitega. MongoDB on skeemivaba andmebaas, mis tähendab, et andmeid saab lisada ilma konkreetset struktuuri järgimata. See paindlikkus muudab MongoDB ideaalseks suurte andmemahtude salvestamiseks, kuid muudab ka andmete haldamise keerulisemaks.
Mongoose pakub skeemipõhist lahendust, mis aitab tagada, et MongoDB-sse salvestatud andmed on järjepidevad ja õigesti vormindatud. Mongoose'i abil saate oma andmemudelite jaoks määratleda skeemi, mis määrab andmete struktuuri ja reeglid, kuidas neid andmeid tuleks vormindada. Siin saate uurida, kuidas kasutada Mongoose'i Expressi rakenduses.
Arenduskeskkonna seadistamine
Enne Mongoose'i kasutamist peate selle installima oma projekti sõltuvusena.
Mongoose'i saate installida, käivitades alloleva käsu:
npm install mongoose
Pärast Mongoose'i projekti installimist peate oma rakenduse Mongoose'i abil MongoDB-ga ühendama.
Mongoose loob ühenduse MongoDB andmebaasiga, kasutades ühendada meetod, mis võtab argumendina MongoDB URI.
Siin on näide:
// index.js
konst mangust = nõuda("mongoose")mongoose.connect("mongodb://127.0.0.1:27017/example", () =>
konsool.log("Ühendus andmebaasiga edukalt")
);
Ülaltoodud koodiplokk loob ühenduse kohaliku MongoDB eksemplariga ja logib eduteate, kui teie rakendus loob edukalt ühenduse MongoDB-ga.
Mongoose mudeli loomine
Mongoose'i mudel on Mongoose'i skeemipõhine klass, mis võimaldab teil suhelda MongoDB koguga.
Mongoose skeem määrab MongoDB kogusse salvestatavate dokumentide struktuuri ja pakub liidest selles olevate dokumentide loomiseks, lugemiseks, värskendamiseks ja kustutamiseks kogumine.
Mongoose'i mudeli määratlemisel määratlete selles kogus olevate dokumentide skeemi, sealhulgas atribuudid, nende tüübid ja kõik kinnitused.
Siin on näide Mongoose mudelist a Kasutaja kollektsioon:
konst mangust = nõuda("mongoose");
konst userSchema = mangust. Skeem({
nimi: {
tüüp: String,
nõutud: [tõsi, "Nimi on nõutav"],
},
email: {
tüüp: String,
nõutud: tõsi,
},
vanus: {
tüüp: Number,
kinnita: {
validaator: funktsiooni (väärtus) {
tagasi väärtus > 0;
},
sõnum: () =>"Palun sisestage kehtiv vanus",
},
},
});konst Kasutaja = mongoose.model("Kasutaja", userSchema);
moodul.exports = Kasutaja;
Ülaltoodud koodiplokk määratleb kolme omadusega Mongoose skeemi: nimi, meilija vanus. Igal atribuudil on määratletud reeglite kogum, mida peate järgima väärtuse vastendamisel selle määratud väljale. Siin on reeglite jaotus:
- nimi: nimi vara on a string tüüp märgitud kui nõutud, mis tähendab, et peate sellele väljale vastama stringi. Kui jätate välja tühjaks või sisestate teise JavaScripti andmetüüp, Mongoose viskab vea.
- meili: meili vara on a string tüüp märgitud kui nõutud. Sellel pole muid valideerimisreegleid, kuid praktikas peaksite kontrollima, kas e-kiri on õige. Saate meili kinnitada kasutades regex-avaldisi või kolmanda osapoole teegid, näiteks klassivalidaator.
- vanus: vanus vara on a number tüüp kohandatud valideerimisreegliga, mis kontrollib, kas väljale vastendatud väärtus on suurem kui null. Kui väärtus ei läbi valideerimist, saadab Mongoose sõnumiga veateate Sisestage kehtiv vanus. Võite selle välja tühjaks jätta, kuna see pole märgitud kui nõutud.
Pärast skeemi määratlemist loob koodiplokk Mongoose'i mudeli nimega Kasutaja kasutades mongoose.model() meetod. Sellel meetodil on kaks argumenti: mudeli nimi ja dokumentide jaoks kasutatav skeem.
Lõpuks, Kasutaja mudel eksporditakse teie rakenduse teistesse osadesse.
Suhtlemine MongoDB-ga Mongoose'i abil
Kui teie rakendus on ühendatud MongoDB andmebaasiga ja teie mudel on loodud ja juurdepääsetav teie rakenduse teistele osadele, saate oma andmebaasiga suhelda Mongoose'i pakutavate meetodite abil.
Selle õpetuse jaoks esinete CRUD toimingud MongoDB andmebaasis.
Märge: Importige kindlasti oma Mongoose mudel igasse moodulisse, kus teete CRUD-toiminguid.
Näiteks:
// ruuter.js
konst Kasutaja = nõuda("./userModel")
Dokumendi loomine
Dokument on mudeli eksemplar. Mongoose'i abil saate dokumendi MongoDB-sse luua ja salvestada mitmel viisil.
Esiteks saate luua oma mudeli klassi eksemplari ja seejärel helistada salvestada meetod sellel.
Näiteks:
//Uue kasutaja loomine
lase kasutaja = uus Kasutaja({
nimi,
email,
vanus,
});
//Kasutaja salvestamine andmebaasi
kasutaja
.save()
.hen(() => {
konsool.log("Kasutaja loodud edukalt");
})
.catch((viga) => {
//käepideme viga
});
Ülaltoodud koodiplokk loob ja salvestab uue Kasutaja dokument oma MongoDB andmebaasi.
Samuti saate andmeid oma andmebaasi salvestada, kasutades luua meetod. The luua meetod instantseerib teie mudeli ja kutsub esile salvestada meetod sellel. Sõnasõnaga ühendab see eelnevalt mainitud tehnika kaks toimingut.
Näiteks:
User.create({nimi, email, vanus }, (err, data) => {
kui (viga) viskamauusViga("Sisemine serveri viga");
konsool.log(`Kasutaja loodud edukalt: ${data}`);
});
Ülaltoodud koodiplokk loob uue Kasutaja dokument, mille atribuudid on antud argumendina käsule luua meetod.
Teise võimalusena saate andmeid oma andmebaasi salvestada, kasutades sisesta palju meetod. Kuigi see meetod sobib ideaalselt ainult andmete partiidena salvestamiseks.
Näiteks:
User.insertMany(
[
{ nimi, e-post, vanus },
{ nimi_1, e-post_1, vanus_1 },
],
(err, tulemus) => {
kui (err) {
//käepideme viga
} muidu {
//Saada tulemused
}
}
);
Ülaltoodud koodiplokk loob kaks uut dokumenti Kasutaja kogumine, kasutades massiivi, mis edastati argumendina käsule sisesta palju meetod.
Dokumendi lugemine
Kõigile MongoDB andmebaasis olevatele salvestatud dokumentidele pääsete juurde Mongoose'i abil leida meetod.
Näiteks:
User.find({})
.hen((andmeid) => {
konsool.log (andmed);
})
.catch((eks) => {
//käepideme viga
});
Ülaltoodud koodiplokk tagastab kõik failis olevad dokumendid Kasutaja kogumine.
Samuti saate leida kõik dokumendid, mis vastavad konkreetsele päringule, suunates päringu otsingumeetodile.
Näiteks:
// leia kõik dokumendid, mille vanus on vähemalt 18
User.find({ vanus: { $gte: 18 } })
.hen((andmeid) =>konsool.log (andmed))
.catch((viga) =>konsool.log (viga));
Ülaltoodud koodiplokk tagastab kõik dokumendid, mille vanuseväärtus on suurem kui 18 aastat Kasutaja kogumine.
Alternatiivina saate lugeda üksikuid kirjeid kasutades findById meetodit ja dokumendi ID edastamist argumendina või kasutades leia üks meetod ja argumendina filtri läbimine.
Näiteks:
//findById
User.findById (id, (viga, tulemus) => {
kui (tulemus) konsool.log (tulemus);
kui (viga) konsool.error (viga)
});
//findOne
User.findOne({ meili: "[email protected]" }).siis((kasutaja) => {
kui (!kasutaja) {
//käepideme viga
}
//saada vastus
});
Ülaltoodud koodiplokis on findById meetod tagastab sobiva ID-ga dokumendi. The leia üks meetod tagastab esimese dokumendi, millel on meil [email protected].
Dokumendi värskendamine
Saate värskendada MongoDB-s olevat dokumenti Mongoose'iga, kasutades findByIdAndUpdate meetod. See meetod võtab ID ja värskendatud üksikasjadega objekti.
Näiteks:
User.findByIdAndUpdate (id, req.body, (err, doc) => {
kui (doc) {
//Saada vastus
}
kui (err) {
//käepideme viga
}
});
Ülaltoodud koodiplokk värskendab dokumenti, mille ID vastab antud ID-le ja pakutud värskendusobjektile (req.body).
Dokumendi kustutamine
Saate Mongoose'iga MongoDB-s oleva dokumendi kustutada, kasutades findByIdAndDelete meetod. See meetod võtab argumendina ID ja kustutab vastava ID-ga dokumendi.
Näiteks:
User.findByIdAndDelete (id, (viga, tulemus) => {
kui (tulemus) {
//Käitle tulemus
}
kui (viga) {
//Käepide viga
}
});
Ülaltoodud koodiplokk kustutab teie MongoDB andmebaasist antud ID-ga dokumendi.
Mongoose kasutamine oma ekspressrakendustes
See artikkel andis ülevaate sellest, kuidas saaksite Mongoose'i oma kiirrakenduses kasutada. Kirjeldatakse, kuidas saate luua ühenduse MongoDB-ga, struktureerida ja kinnitada oma MongoDB andmebaasi salvestatud andmeid ning teha lihtsaid CRUD-toiminguid.
Kasutades oma Expressi rakendustes Mongoose'i, saate oma rakenduse ja MongoDB andmebaasi vahelist suhtlust lihtsustada ja sujuvamaks muuta.