Ενσωματώστε την εφαρμογή Node.js με μια βάση δεδομένων MongoDB χρησιμοποιώντας το Mongoose.

Η διαχείριση δεδομένων σε μια βάση δεδομένων MongoDB μπορεί να είναι δύσκολη, ειδικά όταν αντιμετωπίζουμε πολύπλοκα μοντέλα δεδομένων. Το MongoDB είναι μια βάση δεδομένων χωρίς σχήμα, που σημαίνει ότι τα δεδομένα μπορούν να προστεθούν χωρίς να ακολουθήσετε μια συγκεκριμένη δομή. Αυτή η ευελιξία καθιστά το MongoDB ιδανικό για την αποθήκευση μεγάλων ποσοτήτων δεδομένων, αλλά και δυσκολεύει τη διαχείριση δεδομένων.

Το Mongoose παρέχει μια λύση που βασίζεται σε σχήματα που διασφαλίζει ότι τα δεδομένα που αποθηκεύονται στο MongoDB είναι συνεπή και σωστά μορφοποιημένα. Με το Mongoose, μπορείτε να ορίσετε ένα σχήμα για τα μοντέλα δεδομένων σας, το οποίο καθορίζει τη δομή των δεδομένων και τους κανόνες για τον τρόπο μορφοποίησης αυτών των δεδομένων. Εδώ θα εξερευνήσετε πώς να χρησιμοποιήσετε το Mongoose σε μια εφαρμογή Express.

Ρύθμιση του αναπτυξιακού σας περιβάλλοντος

Πριν χρησιμοποιήσετε το Mongoose, πρέπει να το εγκαταστήσετε ως εξάρτηση στο έργο σας.

instagram viewer

Μπορείτε να εγκαταστήσετε το Mongoose εκτελώντας την παρακάτω εντολή:

npm εγκατάσταση mongoose

Αφού εγκαταστήσετε το Mongoose στο έργο σας, πρέπει να συνδέσετε την εφαρμογή σας στο MongoDB χρησιμοποιώντας το Mongoose.

Το Mongoose συνδέεται με μια βάση δεδομένων MongoDB χρησιμοποιώντας το συνδέω-συωδεομαι μέθοδο, η οποία λαμβάνει ως όρισμα ένα URI MongoDB.

Εδώ είναι ένα παράδειγμα:

// index.js
συνθ μαγκούστα = απαιτώ("μαγκούστα")

mongoose.connect("mongodb://127.0.0.1:27017/example", () =>
κονσόλα.κούτσουρο("Συνδέθηκε με επιτυχία στη βάση δεδομένων")
);

Το μπλοκ κώδικα παραπάνω συνδέεται με μια τοπική παρουσία MongoDB και καταγράφει ένα μήνυμα επιτυχίας όταν η εφαρμογή σας συνδεθεί με επιτυχία στο MongoDB.

Δημιουργώντας ένα μοντέλο Mongoose

Ένα μοντέλο Mongoose είναι μια κλάση που βασίζεται σε σχήματα στο Mongoose που σας επιτρέπει να αλληλεπιδράτε με μια συλλογή MongoDB.

Ένα σχήμα Mongoose ορίζει τη δομή των εγγράφων που μπορείτε να αποθηκεύσετε σε μια συλλογή MongoDB και παρέχει μια διεπαφή για τη δημιουργία, την ανάγνωση, την ενημέρωση και τη διαγραφή εγγράφων σε αυτό συλλογή.

Όταν ορίζετε ένα μοντέλο Mongoose, ορίζετε το σχήμα για τα έγγραφα αυτής της συλλογής, συμπεριλαμβανομένων των ιδιοτήτων, των τύπων τους και τυχόν επικυρώσεις.

Ακολουθεί ένα παράδειγμα μοντέλου Mongoose για α Χρήστης συλλογή:

συνθ μαγκούστα = απαιτώ("μαγκούστα");

συνθ userSchema = μαγκούστα. Σχήμα({
όνομα: {
τύπος: Σειρά,
απαιτείται: [αληθής, "Το όνομα είναι υποχρεωτικό"],
},
ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ: {
τύπος: Σειρά,
απαιτείται: αληθής,
},
ηλικία: {
τύπος: Αριθμός,
επικύρωση: {
επικυρωτής: λειτουργία (αξία) {
ΕΠΙΣΤΡΟΦΗ αξία > 0;
},
μήνυμα: () =>"Παρακαλώ εισάγετε μια έγκυρη ηλικία",
},
},
});

συνθ Χρήστης = mongoose.model("Χρήστης", userSchema);

μονάδα μέτρησης.exports = Χρήστης;

Το παραπάνω μπλοκ κώδικα ορίζει ένα σχήμα Mongoose με τρεις ιδιότητες: όνομα, ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ, και ηλικία. Κάθε ιδιότητα έχει ένα καθορισμένο σύνολο κανόνων που πρέπει να ακολουθείτε κατά την αντιστοίχιση μιας τιμής στο καθορισμένο πεδίο της. Ακολουθεί μια ανάλυση των κανόνων:

  • όνομα: Ο όνομα ιδιοκτησία είναι α σειρά τύπος επισημασμένος ως απαιτείται, που σημαίνει ότι πρέπει να αντιστοιχίσετε μια συμβολοσειρά σε αυτό το πεδίο. Εάν αφήσετε το πεδίο κενό ή εισάγετε διαφορετικό Τύπος δεδομένων JavaScript, ο Mongoose κάνει λάθος.
  • ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ: Ο ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ ιδιοκτησία είναι α σειρά τύπος επισημασμένος ως απαιτείται. Δεν έχει άλλους κανόνες επικύρωσης, αλλά στην πράξη, θα πρέπει να επικυρώσετε εάν το email είναι σωστό. Μπορείτε να επικυρώσετε το email χρησιμοποιώντας εκφράσεις regex ή βιβλιοθήκες τρίτων, όπως class-validator.
  • ηλικία: Ο ηλικία ιδιοκτησία είναι α αριθμός πληκτρολογήστε με έναν προσαρμοσμένο κανόνα επικύρωσης που ελέγχει εάν η τιμή που αντιστοιχίζεται στο πεδίο είναι μεγαλύτερη από το μηδέν. Εάν η τιμή δεν περάσει την επικύρωση, το Mongoose εκτελεί ένα σφάλμα με το μήνυμα Εισαγάγετε μια έγκυρη ηλικία. Μπορείτε να αφήσετε αυτό το πεδίο κενό καθώς δεν έχει επισημανθεί ως απαιτείται.

Μετά τον καθορισμό του σχήματος, το μπλοκ κώδικα δημιουργεί ένα μοντέλο Mongoose που ονομάζεται Χρήστης χρησιμοποιώντας mongoose.model() μέθοδος. Αυτή η μέθοδος παίρνει δύο ορίσματα: το όνομα του μοντέλου και το σχήμα που θα χρησιμοποιηθεί για τα έγγραφα.

Τέλος, το Χρήστης μοντέλο εξάγεται σε άλλα μέρη της εφαρμογής σας.

Αλληλεπίδραση με το MongoDB χρησιμοποιώντας το Mongoose

Με την εφαρμογή σας συνδεδεμένη σε μια βάση δεδομένων MongoDB και το μοντέλο σας που έχει δημιουργηθεί και είναι προσβάσιμο σε άλλα μέρη της εφαρμογής σας, μπορείτε να αλληλεπιδράσετε με τη βάση δεδομένων σας χρησιμοποιώντας μεθόδους που παρέχονται από την Mongoose.

Για αυτό το σεμινάριο, θα εκτελέσετε Λειτουργίες CRUD σε βάση δεδομένων MongoDB.

Σημείωση: Βεβαιωθείτε ότι έχετε εισαγάγει το μοντέλο Mongoose σε οποιαδήποτε μονάδα όπου θα εκτελείτε τις λειτουργίες CRUD.

Για παράδειγμα:

// router.js

συνθ Χρήστης = απαιτώ("./userModel")

Δημιουργία Εγγράφου

Ένα έγγραφο είναι ένα παράδειγμα ενός μοντέλου. Υπάρχουν διάφοροι τρόποι με τους οποίους μπορείτε να δημιουργήσετε και να αποθηκεύσετε ένα έγγραφο στο MongoDB χρησιμοποιώντας το Mongoose.

Αρχικά, μπορείτε να δημιουργήσετε μια παρουσία της κατηγορίας του μοντέλου σας και στη συνέχεια να καλέσετε το αποθηκεύσετε μέθοδο σε αυτό.

Για παράδειγμα:

//Δημιουργία νέου χρήστη
αφήνω χρήστης = νέος Χρήστης({
όνομα,
ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ,
ηλικία,
});

//Αποθήκευση χρήστη στη βάση δεδομένων
χρήστης
.αποθηκεύσετε()
.έπειτα(() => {
κονσόλα.κούτσουρο("Ο χρήστης δημιουργήθηκε με επιτυχία");
})
.σύλληψη((λάθος) => {
//Σφάλμα χειρισμού
});

Το μπλοκ κώδικα παραπάνω δημιουργεί και αποθηκεύει ένα νέο Χρήστης έγγραφο στη βάση δεδομένων MongoDB σας.

Μπορείτε επίσης να αποθηκεύσετε δεδομένα στη βάση δεδομένων σας χρησιμοποιώντας το δημιουργώ μέθοδος. ο δημιουργώ μέθοδος εγκαινιάζει το μοντέλο σας και καλεί το αποθηκεύσετε μέθοδο σε αυτό. Με σειρά λέξεων, συνδυάζει τις δύο λειτουργίες της προαναφερθείσας τεχνικής.

Για παράδειγμα:

User.create({ name, email, age }, (err, data) => {
αν (πλανώμαι) βολήνέοςΛάθος("Εσωτερικό Σφάλμα Διακομιστή");

κονσόλα.κούτσουρο(`Ο χρήστης δημιουργήθηκε με επιτυχία: ${δεδομένα}`);
});

Το μπλοκ κώδικα παραπάνω δημιουργεί ένα νέο Χρήστης έγγραφο με τις ιδιότητες μεταβιβάστηκε ως επιχείρημα στο δημιουργώ μέθοδος.

Εναλλακτικά, μπορείτε να αποθηκεύσετε δεδομένα στη βάση δεδομένων σας χρησιμοποιώντας το εισάγετε Πολλά μέθοδος. Αν και αυτή η μέθοδος είναι ιδανική μόνο για αποθήκευση δεδομένων σε παρτίδες.

Για παράδειγμα:

User.insertMany(
[
{ όνομα, email, ηλικία },
{ name_1, email_1, age_1 },
],
(λάθος, αποτέλεσμα) => {
αν (λάθος) {
//Σφάλμα χειρισμού
} αλλού {
//Αποστολή αποτελεσμάτων
}
}
);

Το μπλοκ κώδικα παραπάνω δημιουργεί δύο νέα έγγραφα στο Χρήστης συλλογή χρησιμοποιώντας τον πίνακα που μεταβιβάστηκε ως όρισμα στο εισάγετε Πολλά μέθοδος.

Διαβάζοντας ένα έγγραφο

Μπορείτε να αποκτήσετε πρόσβαση σε όλα τα αποθηκευμένα έγγραφα στη βάση δεδομένων MongoDB χρησιμοποιώντας το Mongoose εύρημα μέθοδος.

Για παράδειγμα:

User.find({})
.έπειτα((δεδομένα) => {
κονσόλα.log (δεδομένα);
})
.σύλληψη((πλανώμαι) => {
//Σφάλμα χειρισμού
});

Το παραπάνω μπλοκ κωδικών θα επιστρέψει όλα τα έγγραφα στο Χρήστης συλλογή.

Μπορείτε επίσης να βρείτε όλα τα έγγραφα που ταιριάζουν με ένα συγκεκριμένο ερώτημα περνώντας ένα ερώτημα στη μέθοδο εύρεσης.

Για παράδειγμα:

// βρείτε όλα τα έγγραφα όπου η ηλικία είναι τουλάχιστον 18 ετών
User.find({ ηλικία: { $gte: 18 } })
.έπειτα((δεδομένα) =>κονσόλα.log (δεδομένα))
.σύλληψη((λάθος) =>κονσόλα.log (σφάλμα));

Το παραπάνω μπλοκ κωδικών θα επιστρέψει όλα τα έγγραφα με τιμή ηλικίας μεγαλύτερη από 18 στο Χρήστης συλλογή.

Εναλλακτικά, μπορείτε να διαβάσετε μεμονωμένες εγγραφές χρησιμοποιώντας το findById μέθοδο και μεταβίβαση ενός αναγνωριστικού εγγράφου ως όρισμα ή χρησιμοποιώντας το βρες ένα μέθοδο και περνώντας ένα φίλτρο ως όρισμα.

Για παράδειγμα:

//findById
User.findById (αναγνωριστικό, (σφάλμα, αποτέλεσμα) => {
αν (αποτέλεσμα) κονσόλα.log (αποτέλεσμα);
αν (λάθος) κονσόλα.error (σφάλμα)
});

//findOne
User.findOne({ ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ: "[email protected]" }).έπειτα((χρήστης) => {
αν (!χρήστης) {
//Σφάλμα χειρισμού
}
//αποστολή απάντησης
});

Στο παραπάνω μπλοκ κώδικα, το findById μέθοδος επιστρέφει το έγγραφο με το αντίστοιχο αναγνωριστικό. ο βρες ένα μέθοδος επιστρέφει το πρώτο έγγραφο που έχει το email [email protected].

Ενημέρωση εγγράφου

Μπορείτε να ενημερώσετε ένα έγγραφο στο MongoDB με το Mongoose χρησιμοποιώντας το findByIdAndUpdate μέθοδος. Αυτή η μέθοδος παίρνει ένα αναγνωριστικό και ένα αντικείμενο με τις ενημερωμένες λεπτομέρειες.

Για παράδειγμα:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
αν (έγγραφο) {
//Αποστολή απάντησης
}
αν (λάθος) {
//Σφάλμα χειρισμού
}
});

Το παραπάνω μπλοκ κώδικα ενημερώνει το έγγραφο με αναγνωριστικό που αντιστοιχεί στο παρεχόμενο αναγνωριστικό με το παρεχόμενο αντικείμενο ενημέρωσης (απαιτ.σώμα).

Διαγραφή Εγγράφου

Μπορείτε να διαγράψετε ένα έγγραφο στο MongoDB με το Mongoose χρησιμοποιώντας το findByIdAndDelete μέθοδος. Αυτή η μέθοδος παίρνει ένα αναγνωριστικό ως όρισμα και διαγράφει το έγγραφο με το αντίστοιχο αναγνωριστικό.

Για παράδειγμα:

User.findByIdAndDelete (αναγνωριστικό, (σφάλμα, αποτέλεσμα) => {
αν (αποτέλεσμα) {
//Χειριστείτε το αποτέλεσμα
}
αν (λάθος) {
//Σφάλμα χειρισμού
}
});

Το παραπάνω μπλοκ κώδικα διαγράφει ένα έγγραφο με το δεδομένο αναγνωριστικό από τη βάση δεδομένων MongoDB.

Χρήση του Mongoose στις εφαρμογές Express σας

Αυτό το άρθρο παρείχε μια επισκόπηση του τρόπου με τον οποίο μπορείτε να χρησιμοποιήσετε το Mongoose στην εφαρμογή express. Καλύπτει πώς μπορείτε να δημιουργήσετε μια σύνδεση με το MongoDB, να δομήσετε και να επικυρώσετε δεδομένα που είναι αποθηκευμένα στη βάση δεδομένων σας MongoDB και να εκτελέσετε απλές λειτουργίες CRUD.

Χρησιμοποιώντας το Mongoose στις εφαρμογές σας Express, μπορείτε να απλοποιήσετε και να απλοποιήσετε τις αλληλεπιδράσεις μεταξύ της εφαρμογής σας και μιας βάσης δεδομένων MongoDB.