Integrujte svoju aplikáciu Node.js s databázou MongoDB pomocou Mongoose.
Správa údajov v databáze MongoDB môže byť náročná, najmä ak ide o zložité dátové modely. MongoDB je databáza bez schém, čo znamená, že údaje je možné pridávať bez toho, aby ste dodržali konkrétnu štruktúru. Vďaka tejto flexibilite je MongoDB ideálny na ukladanie veľkého množstva údajov, ale zároveň sťažuje správu údajov.
Mongoose poskytuje riešenie založené na schéme, ktoré pomáha zabezpečiť, aby údaje uložené v MongoDB boli konzistentné a správne naformátované. Pomocou Mongoose môžete pre svoje dátové modely definovať schému, ktorá špecifikuje štruktúru dát a pravidlá, ako majú byť dáta formátované. Tu sa dozviete, ako používať Mongoose v aplikácii Express.
Nastavenie vývojového prostredia
Pred použitím Mongoose ho musíte nainštalovať ako závislosť vo svojom projekte.
Mongoose môžete nainštalovať spustením príkazu nižšie:
npm nainštalovať mongoose
Po nainštalovaní Mongoose do vášho projektu musíte svoju aplikáciu pripojiť k MongoDB pomocou Mongoose.
Mongoose sa pripája k databáze MongoDB pomocou pripojiť metóda, ktorá berie ako argument MongoDB URI.
Tu je príklad:
// index.js
konšt mangusta = vyžadovať("mangusta")mongoose.connect("mongodb://127.0.0.1:27017/example", () =>
konzoly.log("Úspešne pripojené k databáze")
);
Blok kódu vyššie sa pripojí k lokálnej inštancii MongoDB a zaznamená správu o úspechu, keď sa vaša aplikácia úspešne pripojí k MongoDB.
Vytvorenie modelu Mongoose
Model Mongoose je trieda založená na schéme v Mongoose, ktorá vám umožňuje interakciu s kolekciou MongoDB.
Schéma Mongoose definuje štruktúru dokumentov, ktoré môžete uložiť v kolekcii MongoDB a poskytuje rozhranie na vytváranie, čítanie, aktualizáciu a odstraňovanie dokumentov zber.
Keď definujete model Mongoose, definujete schému pre dokumenty v tejto kolekcii vrátane vlastností, ich typov a všetkých overení.
Tu je príklad modelu Mongoose pre a Používateľ zbierka:
konšt mangusta = vyžadovať("mangusta");
konšt userSchema = mongoose. Schéma({
názov: {
typ: Reťazec,
požadovaný: [pravda, "Vyžaduje sa meno"],
},
email: {
typ: Reťazec,
požadovaný: pravda,
},
Vek: {
typ: číslo,
potvrdiť: {
validátor: funkciu (hodnotu) {
vrátiť hodnota > 0;
},
správa: () =>"Zadajte platný vek",
},
},
});konšt Používateľ = mongoose.model("používateľ", userSchema);
modul.exports = Používateľ;
Vyššie uvedený blok kódu definuje schému Mongoose s tromi vlastnosťami: názov, email, a Vek. Každá vlastnosť má definovaný súbor pravidiel, ktoré musíte dodržiavať pri mapovaní hodnoty do jej určeného poľa. Tu je rozpis pravidiel:
- názov: The názov nehnuteľnosť je a reťazec typ označený ako požadovaný, čo znamená, že k tomuto poľu musíte namapovať reťazec. Ak necháte pole prázdne alebo zadajte iné Typ údajov JavaScript, Mongoose vyhodí chybu.
- email: The email nehnuteľnosť je a reťazec typ označený ako požadovaný. Nemá žiadne iné pravidlá overovania, ale v praxi by ste mali overiť, či je e-mail správny. E-mail môžete overiť pomocou regulárnych výrazov alebo knižnice tretích strán, ako napríklad class-validator.
- Vek: The Vek nehnuteľnosť je a číslo typu s vlastným overovacím pravidlom, ktoré kontroluje, či je hodnota mapovaná do poľa väčšia ako nula. Ak hodnota neprejde overením, Mongoose vyhodí chybu so správou Zadajte platný vek. Toto pole môžete nechať prázdne, pretože nie je označené ako požadovaný.
Po definovaní schémy blok kódu vytvorí model Mongoose tzv Používateľ použitím mongoose.model() metóda. Táto metóda vyžaduje dva argumenty: názov modelu a schému, ktorá sa má použiť pre dokumenty.
Nakoniec, Používateľ model sa exportuje do iných častí vašej aplikácie.
Interakcia s MongoDB pomocou Mongoose
Keď je vaša aplikácia pripojená k databáze MongoDB a váš model je vytvorený a prístupný pre ostatné časti vašej aplikácie, môžete s vašou databázou komunikovať pomocou metód poskytovaných spoločnosťou Mongoose.
Pre tento tutoriál vystúpite Operácie CRUD na databáze MongoDB.
Poznámka: Uistite sa, že importujete svoj model Mongoose do akéhokoľvek modulu, kde budete vykonávať operácie CRUD.
Napríklad:
// router.js
konšt Používateľ = vyžadovať("./userModel")
Vytvorenie dokumentu
Dokument je inštanciou modelu. Existuje niekoľko spôsobov, ako môžete vytvoriť a uložiť dokument do MongoDB pomocou Mongoose.
Najprv môžete vytvoriť inštanciu triedy vášho modelu a potom zavolať uložiť metóda na ňom.
Napríklad:
//Vytvorenie nového používateľa
nech užívateľ = Nový Používateľ ({
názov,
email,
Vek,
});
//Uloženie používateľa do databázy
užívateľ
.save()
.potom(() => {
konzoly.log("Používateľ bol úspešne vytvorený");
})
.catch((chyba) => {
//ošetrenie chyby
});
Vyššie uvedený blok kódu vytvorí a uloží nový Používateľ dokument do vašej databázy MongoDB.
Údaje môžete do databázy uložiť aj pomocou vytvoriť metóda. The vytvoriť metóda vytvorí inštanciu vášho modelu a zavolá uložiť metóda na ňom. Stručne povedané, kombinuje dve operácie vyššie uvedenej techniky.
Napríklad:
User.create({ meno, email, vek }, (chyba, data) => {
ak (chyba) hodiťNovýChyba("Interná chyba servera");
konzoly.log(`Používateľ bol úspešne vytvorený: ${data}`);
});
Blok kódu vyššie vytvorí nový Používateľ dokument s vlastnosťami odovzdanými ako argument do vytvoriť metóda.
Prípadne môžete uložiť údaje do databázy pomocou vložiťMnoho metóda. Hoci táto metóda je ideálna len na ukladanie údajov v dávkach.
Napríklad:
User.insertMany(
[
{ meno, email, vek },
{ meno_1, email_1, vek_1 },
],
(chyba, výsledok) => {
ak (chyba) {
//ošetrenie chyby
} inak {
//Odoslanie výsledkov
}
}
);
Blok kódu vyššie vytvorí dva nové dokumenty v Používateľ kolekcia pomocou poľa odovzdaného ako argument do vložiťMnoho metóda.
Čítanie dokumentu
Ku všetkým uloženým dokumentom v databáze MongoDB máte prístup pomocou Mongoose's Nájsť metóda.
Napríklad:
User.find({})
.potom((údajov) => {
konzoly.log (údaje);
})
.catch((chybovať) => {
//ošetrenie chyby
});
Blok kódu vyššie vráti všetky dokumenty v Používateľ zber.
Všetky dokumenty, ktoré sa zhodujú s konkrétnym dotazom, môžete nájsť aj odoslaním dotazu do metódy hľadania.
Napríklad:
// nájsť všetky dokumenty, kde je vek aspoň 18 rokov
User.find({ Vek: { $gte: 18 } })
.potom((údajov) =>konzoly.log (údaje))
.catch((chyba) =>konzoly.log (chyba));
Blok kódu uvedený vyššie vráti všetky dokumenty s hodnotou veku vyššou ako 18 v Používateľ zber.
Prípadne môžete čítať jednotlivé záznamy pomocou findById a odovzdaním ID dokumentu ako argumentu alebo pomocou findOne a odovzdanie filtra ako argumentu.
Napríklad:
//findById
User.findById (id, (chyba, výsledok) => {
ak (výsledok) konzoly.log (výsledok);
ak (chyba) konzoly.chyba (chyba)
});
//findOne
User.findOne({ email: "[email protected]" }).potom((užívateľ) => {
ak (!user) {
//ošetrenie chyby
}
//odoslanie odpovede
});
Vo vyššie uvedenom bloku kódu je findById metóda vráti dokument so zodpovedajúcim ID. The findOne metóda vráti prvý dokument s e-mailom [email protected].
Aktualizácia dokumentu
Dokument na MongoDB môžete aktualizovať pomocou Mongoose pomocou findByIdAndUpdate metóda. Táto metóda používa ID a objekt s aktualizovanými podrobnosťami.
Napríklad:
User.findByIdAndUpdate (id, req.body, (chyba, doc) => {
ak (doc) {
//Odoslať odpoveď
}
ak (chyba) {
//ošetrenie chyby
}
});
Vyššie uvedený blok kódu aktualizuje dokument, ktorého ID sa zhoduje s poskytnutým ID s poskytnutým objektom aktualizácie (req.body).
Odstránenie dokumentu
Dokument na MongoDB môžete odstrániť pomocou Mongoose pomocou findByIdAndDelete metóda. Táto metóda berie ID ako argument a vymaže dokument so zodpovedajúcim ID.
Napríklad:
User.findByIdAndDelete (id, (chyba, výsledok) => {
ak (výsledok) {
//Spracovanie výsledku
}
ak (chyba) {
//Oprava chyby
}
});
Vyššie uvedený blok kódu vymaže dokument s daným ID z vašej databázy MongoDB.
Používanie Mongoose vo vašich expresných aplikáciách
Tento článok poskytuje prehľad o tom, ako by ste mohli použiť Mongoose vo svojej expresnej aplikácii. Pokrytie toho, ako môžete vytvoriť pripojenie k MongoDB, štruktúrovať a overovať údaje uložené v databáze MongoDB a vykonávať jednoduché operácie CRUD.
Použitím Mongoose vo vašich Express aplikáciách môžete zjednodušiť a zefektívniť interakcie medzi vašou aplikáciou a databázou MongoDB.