Integrați aplicația dvs. Node.js cu o bază de date MongoDB folosind Mongoose.

Gestionarea datelor într-o bază de date MongoDB poate fi o provocare, mai ales atunci când aveți de-a face cu modele de date complexe. MongoDB este o bază de date fără schemă, ceea ce înseamnă că datele pot fi adăugate fără a urma o anumită structură. Această flexibilitate face ca MongoDB să fie ideal pentru stocarea unor cantități mari de date, dar face și gestionarea datelor mai dificilă.

Mongoose oferă o soluție bazată pe schemă care ajută la asigurarea faptului că datele salvate în MongoDB sunt consecvente și formatate corect. Cu Mongoose, puteți defini o schemă pentru modelele dvs. de date, care specifică structura datelor și regulile pentru modul în care aceste date trebuie formatate. Aici veți explora cum să utilizați Mongoose într-o aplicație Express.

Configurarea mediului de dezvoltare

Înainte de a utiliza Mongoose, trebuie să îl instalați ca dependență în proiectul dvs.

Puteți instala Mongoose rulând comanda de mai jos:

instagram viewer
npm instalează mangusta

După ce instalați Mongoose în proiectul dvs., trebuie să vă conectați aplicația la MongoDB folosind Mongoose.

Mongoose se conectează la o bază de date MongoDB folosind conectați metoda, care ia ca argument un URI MongoDB.

Iată un exemplu:

// index.js
const mangusta = cere("mangustă")

mangoose.connect(„mongodb://127.0.0.1:27017/exemplu”, () =>
consolă.Buturuga(„Conectat cu succes la baza de date”)
);

Blocul de cod de mai sus se conectează la o instanță locală MongoDB și înregistrează un mesaj de succes atunci când aplicația dvs. se conectează cu succes la MongoDB.

Crearea unui model de mangustă

Un model Mongoose este o clasă bazată pe schemă în Mongoose care vă permite să interacționați cu o colecție MongoDB.

O schemă Mongoose definește structura documentelor pe care le puteți stoca într-o colecție MongoDB și oferă o interfață pentru crearea, citirea, actualizarea și ștergerea documentelor din acesta Colectie.

Când definiți un model Mongoose, definiți schema pentru documentele din acea colecție, inclusiv proprietățile, tipurile acestora și orice validări.

Iată un exemplu de model Mongoose pentru a Utilizator Colectie:

const mangusta = cere("mangustă");

const userSchema = mangusta. Schemă({
Nume: {
tip: Şir,
necesar: [Adevărat, „Numele este obligatoriu”],
},
e-mail: {
tip: Şir,
necesar: Adevărat,
},
varsta: {
tip: Număr,
valida: {
validator: funcţie (valoare) {
întoarcere valoare > 0;
},
mesaj: () =>„Vă rugăm să introduceți o vârstă validă”,
},
},
});

const Utilizator = mangoose.model("Utilizator", userSchema);

modul.exports = Utilizator;

Blocul de cod de mai sus definește o schemă Mongoose cu trei proprietăți: Nume, e-mail, și vârstă. Fiecare proprietate are un set definit de reguli pe care trebuie să le urmați atunci când mapați o valoare la câmpul specificat. Iată o defalcare a regulilor:

  • Nume: The Nume proprietatea este a şir tip marcat ca necesar, ceea ce înseamnă că trebuie să mapați un șir la acest câmp. Dacă lăsați câmpul gol sau introduceți altul tip de date JavaScript, Mongoose aruncă o eroare.
  • e-mail: The e-mail proprietatea este a şir tip marcat ca necesar. Nu are alte reguli de validare, dar, în practică, ar trebui să validați dacă e-mailul este corect. Puteți valida e-mailul folosind expresii regex sau biblioteci terțe, cum ar fi class-validator.
  • vârstă: The vârstă proprietatea este a număr tastați cu o regulă de validare personalizată care verifică dacă valoarea mapată la câmp este mai mare decât zero. Dacă valoarea nu trece de validare, Mongoose aruncă o eroare cu mesajul Vă rugăm să introduceți o vârstă validă. Puteți lăsa acest câmp gol, deoarece nu este marcat ca necesar.

După definirea schemei, blocul de cod creează un model Mongoose numit Utilizator folosind mangusta.model() metodă. Această metodă are două argumente: numele modelului și schema de utilizat pentru documente.

În cele din urmă, cel Utilizator modelul este exportat în alte părți ale aplicației dvs.

Interacțiunea cu MongoDB folosind Mongoose

Cu aplicația dvs. conectată la o bază de date MongoDB și modelul dvs. creat și accesibil altor părți ale aplicației dvs., puteți interacționa cu baza de date folosind metodele oferite de Mongoose.

Pentru acest tutorial, veți face Operațiuni CRUD pe o bază de date MongoDB.

Notă: Asigurați-vă că importați modelul dvs. Mongoose în orice modul în care veți efectua operațiunile CRUD.

De exemplu:

// router.js

const Utilizator = cere(„./userModel”)

Crearea unui document

Un document este o instanță a unui model. Există mai multe moduri în care puteți crea și salva un document în MongoDB folosind Mongoose.

În primul rând, puteți crea o instanță a clasei modelului dvs. și apoi puteți apela Salvați metoda pe ea.

De exemplu:

//Crearea unui utilizator nou
lăsa utilizator = nou Utilizator({
Nume,
e-mail,
vârstă,
});

//Salvarea utilizatorului în baza de date
utilizator
.Salvați()
.apoi(() => {
consolă.Buturuga(„Utilizatorul creat cu succes”);
})
.captură((eroare) => {
//tratează eroarea
});

Blocul de cod de mai sus creează și salvează un nou Utilizator document în baza de date MongoDB.

De asemenea, puteți salva date în baza de date folosind crea metodă. The crea metoda instanțiază modelul dvs. și apelează Salvați metoda pe ea. Cu alte cuvinte, combină cele două operații ale tehnicii menționate anterior.

De exemplu:

User.create({ name, email, age }, (err, data) => {
dacă (eroare) aruncanouEroare("Internal Server Error");

consolă.Buturuga(`Utilizatorul creat cu succes: ${date}`);
});

Blocul de cod de mai sus creează un nou Utilizator document cu proprietățile transmise ca argument la crea metodă.

Alternativ, puteți salva datele în baza de date folosind inserațiMulți metodă. Deși această metodă este ideală doar pentru salvarea datelor în loturi.

De exemplu:

User.insertMany(
[
{ nume, e-mail, vârstă },
{ name_1, email_1, age_1 },
],
(eră, rezultat) => {
dacă (eroare) {
//tratează eroarea
} altfel {
//Trimite rezultate
}
}
);

Blocul de cod de mai sus creează două documente noi în Utilizator colecție folosind matricea transmisă ca argument la inserațiMulți metodă.

Citirea unui document

Puteți accesa toate documentele salvate în baza de date MongoDB folosind Mongoose găsi metodă.

De exemplu:

User.find({})
.apoi((date) => {
consolă.log (date);
})
.captură((a greșit) => {
//tratează eroarea
});

Blocul de cod de mai sus va returna toate documentele din Utilizator Colectie.

De asemenea, puteți găsi toate documentele care se potrivesc cu o anumită interogare prin trecerea unei interogări la metoda de căutare.

De exemplu:

// găsiți toate documentele la care vârsta este de cel puțin 18 ani
User.find({ vârstă: { $gte: 18 } })
.apoi((date) =>consolă.log (date))
.captură((eroare) =>consolă.log (eroare));

Blocul de cod de mai sus va returna toate documentele cu o valoare de vârstă mai mare de 18 în Utilizator Colectie.

Alternativ, puteți citi înregistrări individuale folosind findById metoda și transmiterea unui ID de document ca argument sau folosind codul găsește una metoda și trecerea unui filtru ca argument.

De exemplu:

//findById
User.findById (id, (eroare, rezultat) => {
dacă (rezultat) consolă.log (rezultat);
dacă (eroare) consolă.eroare (eroare)
});

//findOne
User.findOne({ e-mail: [email protected] }).apoi((utilizator) => {
dacă (!utilizator) {
//tratează eroarea
}
//trimite răspuns
});

În blocul de cod de mai sus, findById metoda returnează documentul cu ID-ul potrivit. The găsește una metoda returnează primul document care are e-mailul [email protected].

Actualizarea unui document

Puteți actualiza un document pe MongoDB cu Mongoose folosind findByIdAndUpdate metodă. Această metodă ia un ID și un obiect cu detaliile actualizate.

De exemplu:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
dacă (doc) {
//Trimite răspuns
}
dacă (eroare) {
//tratează eroarea
}
});

Blocul de cod de mai sus actualizează documentul având un ID care corespunde ID-ului furnizat cu obiectul de actualizare furnizat (corp solicitat).

Ștergerea unui document

Puteți șterge un document pe MongoDB cu Mongoose folosind findByIdAndDelete metodă. Această metodă ia un ID ca argument și șterge documentul cu ID-ul corespunzător.

De exemplu:

User.findByIdAndDelete (id, (eroare, rezultat) => {
dacă (rezultat) {
//Tratați rezultatul
}
dacă (eroare) {
//Tratați eroarea
}
});

Blocul de cod de mai sus șterge un document cu ID-ul dat din baza de date MongoDB.

Utilizarea Mongoose în aplicațiile dvs. Express

Acest articol a oferit o prezentare generală a modului în care ați putea folosi Mongoose în aplicația dvs. expres. Acoperă modul în care puteți stabili o conexiune la MongoDB, structura și valida datele salvate în baza dvs. de date MongoDB și efectuați operațiuni CRUD simple.

Folosind Mongoose în aplicațiile dvs. Express, puteți simplifica și eficientiza interacțiunile dintre aplicația dvs. și o bază de date MongoDB.