Integruokite savo Node.js programą su MongoDB duomenų baze naudodami Mongoose.

Duomenų valdymas MongoDB duomenų bazėje gali būti sudėtingas, ypač kai susiduriama su sudėtingais duomenų modeliais. MongoDB yra duomenų bazė be schemų, tai reiškia, kad duomenis galima pridėti nesilaikant konkrečios struktūros. Dėl šio lankstumo „MongoDB“ idealiai tinka dideliems duomenų kiekiams saugoti, tačiau taip pat apsunkina duomenų valdymą.

„Mongoose“ siūlo schema pagrįstą sprendimą, kuris padeda užtikrinti, kad „MongoDB“ išsaugoti duomenys būtų nuoseklūs ir tinkamai suformatuoti. Naudodami Mongoose galite apibrėžti duomenų modelių schemą, kurioje nurodoma duomenų struktūra ir taisyklės, kaip tie duomenys turi būti formatuojami. Čia sužinosite, kaip „Mongoose“ naudoti „Express“ programoje.

Kūrimo aplinkos nustatymas

Prieš naudodami Mongoose, turite jį įdiegti kaip priklausomybę savo projekte.

Galite įdiegti Mongoose vykdydami toliau pateiktą komandą:

npm įdiegti mongoose

Įdiegę Mongoose savo projekte, turite prijungti programą prie MongoDB naudodami Mongoose.

instagram viewer

Mongoose prisijungia prie MongoDB duomenų bazės naudodamas Prisijungti metodas, kuris kaip argumentą naudoja MongoDB URI.

Štai pavyzdys:

// index.js
konst mangustas = reikalauti("mangustas")

mongoose.connect("mongodb://127.0.0.1:27017/example", () =>
konsolė.log("Sėkmingai prisijungta prie duomenų bazės")
);

Aukščiau pateiktas kodo blokas prisijungia prie vietinio MongoDB egzemplioriaus ir užregistruoja sėkmės pranešimą, kai programa sėkmingai prisijungia prie MongoDB.

Mongoose modelio kūrimas

Mongoose modelis yra schema pagrįsta Mongoose klasė, leidžianti sąveikauti su MongoDB kolekcija.

Mongoose schema apibrėžia dokumentų, kuriuos galite saugoti MongoDB kolekcijoje, struktūrą ir suteikia sąsają dokumentams kurti, skaityti, atnaujinti ir ištrinti kolekcija.

Kai apibrėžiate Mongoose modelį, apibrėžiate to rinkinio dokumentų schemą, įskaitant ypatybes, jų tipus ir bet kokius patvirtinimus.

Štai „Mongoose“ modelio pavyzdys Vartotojas kolekcija:

konst mangustas = reikalauti("mangustas");

konst userSchema = mangustas. Schema({
vardas: {
tipas: Styga,
reikalingas: [tiesa, „Vardas reikalingas“],
},
paštas: {
tipas: Styga,
reikalingas: tiesa,
},
amžius: {
tipas: Skaičius,
patvirtinti: {
tikrintuvas: funkcija (vertė) {
grąžinti vertė > 0;
},
žinutė: () =>„Įveskite tinkamą amžių“,
},
},
});

konst Vartotojas = mongoose.model("Vartotojas", vartotojoSchema);

modulis.exports = Vartotojas;

Aukščiau pateiktas kodo blokas apibrėžia Mongoose schemą su trimis savybėmis: vardas, paštu, ir amžiaus. Kiekviena ypatybė turi apibrėžtą taisyklių rinkinį, kurio turite laikytis susiedami reikšmę su nurodytu lauku. Štai taisyklių suskirstymas:

  • vardas: vardas nuosavybė yra a styga tipas pažymėtas kaip reikalaujama, tai reiškia, kad šiame lauke turite susieti eilutę. Jei paliksite lauką tuščią arba įveskite kitą „JavaScript“ duomenų tipas, Mongoose išmeta klaidą.
  • paštu: paštu nuosavybė yra a styga tipas pažymėtas kaip reikalaujama. Jame nėra kitų patvirtinimo taisyklių, tačiau praktiškai turėtumėte patikrinti, ar el. laiškas teisingas. Galite patvirtinti el naudojant reguliariąsias išraiškas arba trečiųjų šalių bibliotekos, pvz., klasės patvirtinimo priemonė.
  • amžiaus: amžiaus nuosavybė yra a numerį tipą naudodami pasirinktinę patvirtinimo taisyklę, kuri patikrina, ar į lauką susieta reikšmė yra didesnė už nulį. Jei reikšmė nepraeina patvirtinimo, Mongoose kartu su pranešimu pateikia klaidą Įveskite tinkamą amžių. Šį lauką galite palikti tuščią, nes jis nepažymėtas kaip reikalaujama.

Apibrėžęs schemą, kodo blokas sukuria Mongoose modelį, vadinamą Vartotojas naudojant mongoose.model() metodas. Šiam metodui naudojami du argumentai: modelio pavadinimas ir dokumentams naudojama schema.

Galiausiai, Vartotojas modelis eksportuojamas į kitas programos dalis.

Sąveika su MongoDB naudojant Mongoose

Kai programa prijungta prie MongoDB duomenų bazės, o modelis sukurtas ir pasiekiamas kitoms programos dalims, galite sąveikauti su savo duomenų baze naudodami Mongoose pateiktus metodus.

Šioje pamokoje atliksite CRUD operacijos MongoDB duomenų bazėje.

Pastaba: būtinai importuokite savo Mongoose modelį į bet kurį modulį, kuriame atliksite CRUD operacijas.

Pavyzdžiui:

// maršrutizatorius.js

konst Vartotojas = reikalauti("./userModel")

Dokumento kūrimas

Dokumentas yra modelio pavyzdys. Yra keletas būdų, kaip sukurti ir išsaugoti dokumentą MongoDB naudojant Mongoose.

Pirmiausia galite sukurti savo modelio klasės egzempliorių ir paskambinti sutaupyti metodas ant jo.

Pavyzdžiui:

//Naujo vartotojo kūrimas
leisti vartotojas = naujas Vartotojas({
vardas,
paštas,
amžius,
});

//Vartotojas įrašomas į duomenų bazę
Vartotojas
.sutaupyti()
.thena(() => {
konsolė.log("Vartotojas sėkmingai sukurtas");
})
.catch((klaida) => {
//rankenos klaida
});

Aukščiau pateiktas kodo blokas sukuria ir išsaugo naują Vartotojas dokumentą į savo MongoDB duomenų bazę.

Taip pat galite išsaugoti duomenis savo duomenų bazėje naudodami sukurti metodas. The sukurti metodas sukuria jūsų modelio momentus ir iškviečia sutaupyti metodas ant jo. Žodžiu, jis sujungia dvi anksčiau minėtos technikos operacijas.

Pavyzdžiui:

User.create({ vardas, el. pašto adresas, amžius }, (err, data) => {
jeigu (klaida) mestinaujasKlaida("Vidinė serverio klaida");

konsolė.log(`Vartotojas sėkmingai sukurtas: ${data}`);
});

Aukščiau pateiktas kodo blokas sukuria naują Vartotojas dokumentas su savybėmis, perduotas kaip argumentas sukurti metodas.

Arba galite išsaugoti duomenis savo duomenų bazėje naudodami Įterpti Daug metodas. Nors šis metodas idealiai tinka tik duomenims išsaugoti paketais.

Pavyzdžiui:

User.insertMany(
[
{ vardas, el. pašto adresas, amžius },
{ vardas_1, el. pašto adresas_1, amžius_1 },
],
(err, rezultatas) => {
jeigu (err) {
//rankenos klaida
} Kitas {
//Siųsti rezultatus
}
}
);

Aukščiau pateiktas kodo blokas sukuria du naujus dokumentus Vartotojas rinkinys naudojant masyvą, perduotą kaip argumentą Įterpti Daug metodas.

Dokumento skaitymas

Galite pasiekti visus išsaugotus dokumentus savo MongoDB duomenų bazėje naudodami Mongoose's rasti metodas.

Pavyzdžiui:

User.find ({})
.thena((duomenis) => {
konsolė.log (duomenys);
})
.catch((klysti) => {
//rankenos klaida
});

Aukščiau pateiktas kodo blokas grąžins visus dokumentus Vartotojas kolekcija.

Taip pat galite rasti visus dokumentus, kurie atitinka tam tikrą užklausą, perduodami užklausą paieškos metodui.

Pavyzdžiui:

// rasti visus dokumentus, kuriuose amžius yra bent 18 metų
User.find({ amžiaus: { $gte: 18 } })
.thena((duomenis) =>konsolė.log (duomenys))
.catch((klaida) =>konsolė.log (klaida));

Aukščiau pateiktas kodo blokas pateiks visus dokumentus, kurių amžiaus reikšmė didesnė nei 18 metų Vartotojas kolekcija.

Arba galite skaityti atskirus įrašus naudodami findById metodą ir dokumento ID perdavimą kaip argumentą arba naudojant rasti vieną metodą ir filtro perdavimą kaip argumentą.

Pavyzdžiui:

//findById
User.findById (id, (klaida, rezultatas) => {
jeigu (rezultatas) konsolė.log (rezultatas);
jeigu (klaida) konsolė.error (klaida)
});

//findOne
User.findOne({ paštu: "[email protected]" }).tada ((Vartotojas) => {
jeigu (!Vartotojas) {
//rankenos klaida
}
//Siųsti atsakymą
});

Aukščiau pateiktame kodo bloke findById metodas grąžina dokumentą su atitinkamu ID. The rasti vieną metodas grąžina pirmąjį dokumentą, turintį el [email protected].

Dokumento atnaujinimas

Galite atnaujinti MongoDB dokumentą naudodami Mongoose naudodami findByIdAndUpdate metodas. Šis metodas naudoja ID ir objektą su atnaujinta informacija.

Pavyzdžiui:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
jeigu (doc) {
//Siųsti atsakymą
}
jeigu (err) {
//rankenos klaida
}
});

Aukščiau pateiktas kodo blokas atnaujina dokumentą, kurio ID atitinka pateiktą ID su pateiktu atnaujinimo objektu (req.body).

Dokumento ištrynimas

Galite ištrinti MongoDB dokumentą naudodami Mongoose naudodami findByIdAndDelete metodas. Šis metodas naudoja ID kaip argumentą ir ištrina dokumentą su atitinkamu ID.

Pavyzdžiui:

User.findByIdAndDelete (id, (klaida, rezultatas) => {
jeigu (rezultatas) {
//Tvarkyti rezultatą
}
jeigu (klaida) {
//Valdymo klaida
}
});

Aukščiau pateiktas kodo blokas ištrina dokumentą su nurodytu ID iš jūsų MongoDB duomenų bazės.

„Mongoose“ naudojimas „Express“ programose

Šiame straipsnyje apžvelgta, kaip galite naudoti Mongoose savo greitojoje programoje. Aprašoma, kaip galite užmegzti ryšį su MongoDB, struktūrizuoti ir patvirtinti duomenis, išsaugotus MongoDB duomenų bazėje, ir atlikti paprastas CRUD operacijas.

Naudodami „Mongoose“ savo „Express“ programose galite supaprastinti ir racionalizuoti savo programos ir „MongoDB“ duomenų bazės sąveiką.