Integrirajte svoju Node.js aplikaciju s MongoDB bazom podataka koristeći Mongoose.

Upravljanje podacima u MongoDB bazi podataka može biti izazovno, posebno kada se radi o složenim modelima podataka. MongoDB je baza podataka bez shema, što znači da se podaci mogu dodati bez praćenja određene strukture. Ova fleksibilnost čini MongoDB idealnim za pohranjivanje velikih količina podataka, ali također otežava upravljanje podacima.

Mongoose pruža rješenje temeljeno na shemi koje pomaže osigurati da su podaci spremljeni u MongoDB dosljedni i ispravno oblikovani. S Mongooseom možete definirati shemu za svoje podatkovne modele, koja specificira strukturu podataka i pravila za formatiranje podataka. Ovdje ćete istražiti kako koristiti Mongoose u Express aplikaciji.

Postavljanje vašeg razvojnog okruženja

Prije korištenja Mongoosea, morate ga instalirati kao ovisnost u svom projektu.

Možete instalirati Mongoose pokretanjem naredbe ispod:

npm instalirajte mongoose

Nakon što instalirate Mongoose u svoj projekt, trebate povezati svoju aplikaciju s MongoDB-om koristeći Mongoose.

instagram viewer

Mongoose se povezuje s MongoDB bazom podataka pomoću Spojiti metoda, koja uzima MongoDB URI kao argument.

Evo primjera:

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

mongoose.connect("mongodb://127.0.0.1:27017/primjer", () =>
konzola.log("Uspješno povezan s bazom podataka")
);

Gornji blok koda povezuje se s lokalnom MongoDB instancom i bilježi poruku o uspjehu kada se vaša aplikacija uspješno poveže s MongoDB.

Stvaranje Mongoose modela

Mongoose model je klasa temeljena na shemi u Mongooseu koja vam omogućuje interakciju s MongoDB kolekcijom.

Mongoose shema definira strukturu dokumenata koje možete pohraniti u MongoDB zbirku i pruža sučelje za stvaranje, čitanje, ažuriranje i brisanje dokumenata u tome kolekcija.

Kada definirate Mongoose model, definirate shemu za dokumente u toj kolekciji, uključujući svojstva, njihove vrste i sve provjere valjanosti.

Evo primjera Mongoose modela za a Korisnik kolekcija:

konst mungos = zahtijevati("mungos");

konst userSchema = mungos. Shema({
Ime: {
tip: Niz,
potrebno: [pravi, "Ime je potrebno"],
},
email: {
tip: Niz,
potreban: pravi,
},
dob: {
tip: Broj,
potvrdi: {
validator: funkcija (vrijednost) {
povratak vrijednost > 0;
},
poruka: () =>"Molimo unesite valjanu dob",
},
},
});

konst Korisnik = mongoose.model("Korisnik", korisnička shema);

modul.exports = Korisnik;

Gornji blok koda definira Mongoose shemu s tri svojstva: Ime, elektronička pošta, i dob. Svako svojstvo ima definiran skup pravila kojih se morate pridržavati kada preslikavate vrijednost u navedeno polje. Evo raščlambe pravila:

  • Ime: The Ime imovina je a niz tip označen kao potreban, što znači da morate preslikati niz u ovo polje. Ako polje ostavite praznim ili unesete drugo JavaScript vrsta podataka, Mongoose javlja pogrešku.
  • elektronička pošta: The elektronička pošta imovina je a niz tip označen kao potreban. Nema drugih pravila provjere valjanosti, ali u praksi biste trebali provjeriti je li e-pošta ispravna. Možete potvrditi e-poštu koristeći regex izraze ili biblioteke trećih strana, kao što je class-validator.
  • dob: The dob imovina je a broj tip s prilagođenim pravilom provjere valjanosti koje provjerava je li vrijednost preslikana u polje veća od nule. Ako vrijednost ne prođe provjeru valjanosti, Mongoose izbacuje pogrešku s porukom Unesite valjanu dob. Ovo polje možete ostaviti praznim jer nije označeno kao potreban.

Nakon definiranja sheme, kodni blok kreira Mongoose model tzv Korisnik korištenjem mongoose.model() metoda. Ova metoda uzima dva argumenta: naziv modela i shemu koja se koristi za dokumente.

Konačno, Korisnik model se izvozi u druge dijelove vaše aplikacije.

Interakcija s MongoDB-om pomoću Mongoosea

S vašom aplikacijom povezanom s MongoDB bazom podataka i vašim modelom koji je kreiran i dostupan drugim dijelovima vaše aplikacije, možete komunicirati sa svojom bazom podataka koristeći metode koje nudi Mongoose.

Za ovaj tutorial, vi ćete izvesti CRUD operacije na MongoDB bazi podataka.

Bilješka: Obavezno uvezite svoj Mongoose model u bilo koji modul u kojem ćete izvoditi CRUD operacije.

Na primjer:

// router.js

konst Korisnik = zahtijevati("./userModel")

Stvaranje dokumenta

Dokument je instanca modela. Postoji nekoliko načina na koje možete stvoriti i spremiti dokument u MongoDB koristeći Mongoose.

Prvo, možete stvoriti instancu klase vašeg modela i zatim pozvati uštedjeti metoda na njemu.

Na primjer:

//Stvaranje novog korisnika
neka korisnik = novi Korisnik({
Ime,
email,
dob,
});

//Spremanje korisnika u bazu podataka
korisnik
.uštedjeti()
.zatim(() => {
konzola.log("Korisnik je uspješno kreiran");
})
.ulov((greška) => {
//obradi grešku
});

Gornji blok koda stvara i sprema novi Korisnik dokument u vašu MongoDB bazu podataka.

Također možete spremiti podatke u svoju bazu podataka pomoću stvoriti metoda. The stvoriti metoda instancira vaš model i poziva uštedjeti metoda na njemu. Drugim riječima, kombinira dvije operacije prethodno spomenute tehnike.

Na primjer:

User.create({ name, email, age }, (err, data) => {
ako (greška) bacanjenoviGreška("Interna pogreška poslužitelja");

konzola.log(`Korisnik je uspješno kreiran: ${podaci}`);
});

Gornji blok koda stvara novi Korisnik dokument sa svojstvima proslijeđenim kao argument u stvoriti metoda.

Alternativno, možete spremiti podatke u svoju bazu podataka pomoću umetnutiMnogo metoda. Iako je ova metoda idealna samo za spremanje podataka u serijama.

Na primjer:

User.insertMany(
[
{ ime, e-pošta, dob },
{ name_1, email_1, age_1 },
],
(pogreška, rezultat) => {
ako (pogreška) {
//obradi grešku
} drugo {
//Pošalji rezultate
}
}
);

Gornji blok koda stvara dva nova dokumenta u Korisnik zbirka koja koristi polje proslijeđeno kao argument u umetnutiMnogo metoda.

Čitanje dokumenta

Možete pristupiti svim spremljenim dokumentima u vašoj MongoDB bazi podataka koristeći Mongoose pronaći metoda.

Na primjer:

User.find({})
.zatim((podaci) => {
konzola.log (podaci);
})
.ulov((pogriješiti) => {
//obradi grešku
});

Gornji blok koda vratit će sve dokumente u Korisnik kolekcija.

Također možete pronaći sve dokumente koji odgovaraju određenom upitu prosljeđivanjem upita metodi traženja.

Na primjer:

// pronađite sve dokumente koji imaju najmanje 18 godina
User.find({ dob: { $gte: 18 } })
.zatim((podaci) =>konzola.log (podaci))
.ulov((greška) =>konzola.log (greška));

Gornji blok koda vratit će sve dokumente s dobnom vrijednošću većom od 18 u Korisnik kolekcija.

Alternativno, možete čitati pojedinačne zapise pomoću findById metoda i prosljeđivanje ID-a dokumenta kao argumenta ili pomoću findOne metoda i prosljeđivanje filtra kao argumenta.

Na primjer:

//findById
User.findById (id, (greška, rezultat) => {
ako (proizlaziti) konzola.log (rezultat);
ako (greška) konzola.greška (greška)
});

//findOne
User.findOne({ elektronička pošta: "[email protected]" }).zatim((korisnik) => {
ako (!korisnik) {
//obradi grešku
}
//pošalji odgovor
});

U gornjem bloku koda, findById metoda vraća dokument s odgovarajućim ID-om. The findOne metoda vraća prvi dokument koji ima e-poštu [email protected].

Ažuriranje dokumenta

Možete ažurirati dokument na MongoDB s Mongooseom koristeći findByIdAndUpdate metoda. Ova metoda uzima ID i objekt s ažuriranim detaljima.

Na primjer:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
ako (doc) {
//Pošalji odgovor
}
ako (pogreška) {
//obradi grešku
}
});

Gornji blok koda ažurira dokument koji ima ID koji odgovara navedenom ID-u s navedenim objektom ažuriranja (zahtijevano tijelo).

Brisanje dokumenta

Možete izbrisati dokument na MongoDB s Mongooseom pomoću findByIdAndDelete metoda. Ova metoda uzima ID kao argument i briše dokument s odgovarajućim ID-om.

Na primjer:

User.findByIdAndDelete (id, (greška, rezultat) => {
ako (rezultat) {
//Rukovanje rezultatom
}
ako (pogreška) {
//Rješavanje pogreške
}
});

Gornji blok koda briše dokument s danim ID-om iz vaše MongoDB baze podataka.

Korištenje Mongoosea u vašim Express aplikacijama

Ovaj je članak dao pregled kako možete koristiti Mongoose u svojoj ekspresnoj aplikaciji. Obuhvaća kako možete uspostaviti vezu s MongoDB-om, strukturirati i potvrditi podatke spremljene u vašoj MongoDB bazi podataka i izvesti jednostavne CRUD operacije.

Korištenjem Mongoosea u svojim Express aplikacijama, možete pojednostaviti i usmjeriti interakcije između svoje aplikacije i MongoDB baze podataka.