Node.js MongoDB Εκμάθηση με παραδείγματα

⚡ Έξυπνη Σύνοψη

Node.js MongoDB Η ενσωμάτωση επιτρέπει σε μια εφαρμογή Node να συνδεθεί με μια βάση δεδομένων NoSQL, να εκτελέσει λειτουργίες CRUD και να εκθέσει ζωντανά αρχεία μέσω διαδρομών Express, χρησιμοποιώντας το εγγενές πρόγραμμα οδήγησης mongodb μαζί με το Mongoose για μοντελοποίηση δεδομένων που βασίζεται σε σχήματα.

  • 🗄️ Επιλογή βάσης δεδομένων: Το Node.js συνδέεται με σχεσιακές μηχανές όπως MySQL και μηχανές NoSQL όπως MongoDB μέσω ειδικών ενοτήτων npm.
  • 📦 Ρύθμιση προγράμματος οδήγησης: Εκτελέστε την εντολή npm install mongodb για να προσθέσετε το εγγενές πρόγραμμα οδήγησης MongoClient σε ένα έργο Node.js.
  • 🔌 Συνδετικός: Ανοίξτε έναν σύνδεσμο βάσης δεδομένων με το MongoClient.connect και μια επανάκληση ή το σύγχρονο μοτίβο async/await client.connect().
  • 🔍 Ανάγνωση δεδομένων: Χρησιμοποιήστε find() και έναν κέρσορα για να κάνετε επανάληψη σε κάθε έγγραφο μέσα σε ένα MongoDB συλλογής.
  • ✍️ Δεδομένα εγγραφής: Εφαρμόστε τις συναρτήσεις insertOne, updateOne και deleteOne για να προσθέσετε, να επεξεργαστείτε και να καταργήσετε έγγραφα με ασφάλεια.
  • 🧩 Οδηγός έναντι ODM: Επιλέξτε το ελαφρύ πρόγραμμα οδήγησης mongodb για ακατέργαστα ερωτήματα ή το Mongoose όταν η επικύρωση σχήματος έχει σημασία.
  • 🌐 Γρήγορη ενσωμάτωση: Συνδυάστε τις διαδρομές Express με MongoDB ερωτήματα, έτσι ώστε ένα αίτημα προγράμματος περιήγησης να επιστρέφει ενεργές εγγραφές βάσης δεδομένων.

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

Το πλαίσιο Node js μπορεί να λειτουργήσει με βάσεις δεδομένων και με σχεσιακές (όπως π.χ Oracle και MS SQL Server) και μη σχεσιακές βάσεις δεδομένων (όπως MongoDB). Σε αυτό το σεμινάριο, θα δούμε πώς μπορούμε να χρησιμοποιήσουμε βάσεις δεδομένων μέσα από εφαρμογές Node js.

Βάσεις δεδομένων Node.js και NoSQL

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

Το Node.js έχει τη δυνατότητα να λειτουργεί και με τα δύο MySQL και MongoDB ως βάσεις δεδομένων. Για να χρησιμοποιήσετε οποιαδήποτε από αυτές τις βάσεις δεδομένων, πρέπει να πραγματοποιήσετε λήψη και χρήση των απαιτούμενων λειτουργικών μονάδων χρησιμοποιώντας τη Διαχείριση πακέτων Node.

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

Με αυτές τις λειτουργικές μονάδες, μπορείτε να εκτελέσετε τις ακόλουθες λειτουργίες στο Node.js

  1. Διαχείριση της συγκέντρωσης συνδέσεων – Εδώ μπορείτε να καθορίσετε τον αριθμό των MySQL συνδέσεις βάσης δεδομένων που πρέπει να διατηρούνται και να αποθηκευτούν από το Node.js.
  2. Δημιουργήστε και κλείστε μια σύνδεση με μια βάση δεδομένων. Και στις δύο περιπτώσεις, μπορείτε να παρέχετε μια συνάρτηση επανάκλησης που μπορεί να καλείται κάθε φορά που εκτελούνται οι μέθοδοι σύνδεσης "δημιουργία" και "κλείσιμο".
  3. Τα ερωτήματα μπορούν να εκτελεστούν για τη λήψη δεδομένων από αντίστοιχες βάσεις δεδομένων για την ανάκτηση δεδομένων.
  4. Ο χειρισμός δεδομένων, όπως η εισαγωγή δεδομένων, η διαγραφή και η ενημέρωση δεδομένων μπορεί επίσης να επιτευχθεί με αυτές τις μονάδες.

Για τα υπόλοιπα θέματα, θα δούμε πώς μπορούμε να εργαστούμε MongoDB βάσεις δεδομένων εντός Node.js, ξεκινώντας με μια γρήγορη σύγκριση των δύο πιο συνηθισμένων τρόπων για να μιλήσετε MongoDB από ένα έργο Node.js.

MongoDB Εγγενής οδηγός vs Mongoose στο Node.js

Τα ονόματα των μονάδων που αναφέρονται παραπάνω μπορεί να προκαλέσουν σύγχυση, επειδή το Node.js προσφέρει δύο διαφορετικούς τρόπους επικοινωνίας με MongoDB: ο ιθαγενής mongodb οδηγός και ο Μαγκούστα ODM (Βιβλιοθήκη Μοντελοποίησης Δεδομένων Αντικειμένων). Κάθε δείγμα κώδικα αργότερα σε αυτό το άρθρο χρησιμοποιεί το εγγενές πρόγραμμα οδήγησης, το οποίο είναι εγκατεστημένο με npm εγκατάσταση mongodb και προσβάσιμο μέσω MongoClientΤο Mongoose ενσωματώνει το ίδιο πρόγραμμα οδήγησης και προσθέτει ορισμούς σχήματος, επικύρωση και μεθόδους επαναχρησιμοποιήσιμων μοντέλων, κάτι που ταιριάζει σε μεγαλύτερες εφαρμογές που χρειάζονται μια προβλέψιμη δομή δεδομένων σε πολλές συλλογές. Η κατανόηση της διαφοράς εκ των προτέρων αποφεύγει τη σύγχυση κατά την εγκατάσταση πακέτων ή την ανάγνωση άλλων Node.js. MongoDB παραδείγματα στο διαδίκτυο. Ο παρακάτω πίνακας συγκρίνει και τις δύο επιλογές, ώστε ένας προγραμματιστής να μπορεί να επιλέξει το κατάλληλο εργαλείο για ένα δεδομένο έργο.

Άποψη Εγγενής οδηγός mongodb Μαγκούστα
Εγκατάσταση npm εγκατάσταση mongodb npm εγκατάσταση μαγκούστας
Επιβολή σχήματος Κανένα, τα έγγραφα παραμένουν ευέλικτα Ορίζεται μέσω ενός αντικειμένου Schema
Καμπύλη εκμάθησης Χαμηλότερο, πιο κοντά στο ακατέργαστο MongoDB ερωτήματα Υψηλότερο, προσθέτει το δικό του επίπεδο API
καλυτερα for Μικρά σενάρια και κώδικας ευαίσθητος στην απόδοση Μεγαλύτερες εφαρμογές με συνεπή μοντέλα δεδομένων

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

Χρησιμοποιώντας MongoDB και Node.js

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

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

Για τους σκοπούς αυτού του κεφαλαίου, ας υποθέσουμε ότι έχουμε τα παρακάτω MongoDB δεδομένα στη θέση τους.

Όνομα βάσης δεδομένων: EmployeeDB

Όνομα συλλογής: Υπάλληλος

Documents
{
	{Employeeid : 1, Employee Name : Guru99},
	{Employeeid : 2, Employee Name : Joe},
	{Employeeid : 3, Employee Name : Martin},
}
  1. Εγκατάσταση των μονάδων NPM

Χρειάζεστε ένα πρόγραμμα οδήγησης για πρόσβαση στο Mongo μέσα από μια εφαρμογή Node. Υπάρχουν διάφοροι διαθέσιμοι οδηγοί Mongo, αλλά MongoDB είναι από τα πιο δημοφιλή. Για να εγκαταστήσετε το MongoDB ενότητα, εκτελέστε την παρακάτω εντολή

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

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

Code Επεξήγηση:

  1. Το πρώτο βήμα είναι να συμπεριλάβετε το MongoDB μονάδας driver, η οποία γίνεται μέσω της συνάρτησης require. Μόλις εγκατασταθεί αυτή η μονάδα, μπορούμε να χρησιμοποιήσουμε τις απαραίτητες συναρτήσεις που είναι διαθέσιμες σε αυτήν τη μονάδα για να δημιουργήσουμε συνδέσεις με τη βάση δεδομένων.
  2. Στη συνέχεια, καθορίζουμε τη συμβολοσειρά σύνδεσής μας στη βάση δεδομένων. Στη συμβολοσειρά σύνδεσης, υπάρχουν 3 βασικές τιμές που μεταβιβάζονται.
  • Το πρώτο είναι το 'mongodb' που διευκρινίζει ότι συνδεόμαστε σε μια βάση δεδομένων mongoDB.
  • Το επόμενο είναι το 'localhost' που σημαίνει ότι συνδέουμε μια βάση δεδομένων στον τοπικό υπολογιστή.
  • Το επόμενο είναι το 'EmployeeDB' που είναι το όνομα της βάσης δεδομένων που ορίζεται στο δικό μας MongoDB βάση δεδομένων.
  1. Το επόμενο βήμα είναι να συνδεθούμε στη βάση δεδομένων μας. Η συνάρτηση connect λαμβάνει υπόψη μας URL και έχει τη δυνατότητα να καθορίσει μια συνάρτηση επανάκλησης. Θα κληθεί όταν ανοίξει η σύνδεση με τη βάση δεδομένων. Αυτό μας δίνει την ευκαιρία να γνωρίζουμε εάν η σύνδεση στη βάση δεδομένων ήταν επιτυχής ή όχι.
  2. Στη συνάρτηση, γράφουμε τη συμβολοσειρά "Connection installed" στην κονσόλα για να υποδείξουμε ότι δημιουργήθηκε μια επιτυχημένη σύνδεση.
  3. Τέλος, κλείνουμε τη σύνδεση χρησιμοποιώντας τη δήλωση db.close.

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

  1. Ερώτηση για δεδομένα σε α MongoDB βάσεις δεδομένων - Χρησιμοποιώντας την MongoDB πρόγραμμα οδήγησης μπορούμε επίσης να ανακτήσουμε δεδομένα από το MongoDB βάση δεδομένων. Η παρακάτω ενότητα θα δείξει πώς μπορούμε να χρησιμοποιήσουμε το πρόγραμμα οδήγησης για να ανακτήσουμε όλα τα έγγραφα από τη συλλογή Employee στη βάση δεδομένων EmployeeDB. Αυτή είναι η συλλογή στη δική μας MongoDB βάση δεδομένων, η οποία περιέχει όλα τα έγγραφα που σχετίζονται με τους εργαζόμενους. Κάθε έγγραφο έχει ένα αναγνωριστικό αντικειμένου, ένα όνομα υπαλλήλου και ένα αναγνωριστικό υπαλλήλου για τον καθορισμό των τιμών του εγγράφου.

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

var cursor = db.collection('Employee').find();

cursor.each(function(err, doc) {

console.log(doc);

});
});

Code Επεξήγηση:

  1. Στο πρώτο βήμα, δημιουργούμε έναν κέρσορα (ένας κέρσορας είναι ένας δείκτης που χρησιμοποιείται για να δείχνει στις διάφορες εγγραφές που ανακτώνται από μια βάση δεδομένων. Ο κέρσορας χρησιμοποιείται στη συνέχεια για την επανάληψη των διαφορετικών εγγραφών στη βάση δεδομένων. Εδώ ορίζουμε ένα όνομα μεταβλητής που ονομάζεται κέρσορας, το οποίο θα χρησιμοποιηθεί για την αποθήκευση του δείκτη στις εγγραφές που ανακτώνται από τη βάση δεδομένων) ο οποίος δείχνει στις εγγραφές που ανακτώνται από τη συλλογή MongoDb. Έχουμε επίσης τη δυνατότητα να καθορίσουμε τη συλλογή 'Εργαζόμενος' από την οποία θα ανακτήσουμε τις εγγραφές. Η συνάρτηση find() χρησιμοποιείται για να καθορίσει ότι θέλουμε να ανακτήσουμε όλα τα έγγραφα από το MongoDB συλλογής.
  2. Τώρα κάνουμε επανάληψη μέσω του δρομέα μας και για κάθε έγγραφο στον κέρσορα θα εκτελέσουμε μια συνάρτηση.
  3. Η λειτουργία μας είναι απλώς να εκτυπώσουμε τα περιεχόμενα κάθε εγγράφου στην κονσόλα.

Σημείωση: - Είναι επίσης δυνατό να ανακτήσετε μια συγκεκριμένη εγγραφή από μια βάση δεδομένων. Αυτό μπορεί να γίνει καθορίζοντας τη συνθήκη αναζήτησης στη συνάρτηση find(). Για παράδειγμα, ας υποθέσουμε ότι θέλετε απλώς να ανακτήσετε την εγγραφή που έχει το όνομα του υπαλλήλου ως Guru99, τότε αυτή η πρόταση μπορεί να γραφτεί ως εξής

var cursor=db.collection('Employee').find({EmployeeName: "guru99"})

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

Παραγωγή:

Από την έξοδο,

  • Θα μπορείτε να δείτε καθαρά ότι όλα τα έγγραφα από τη συλλογή έχουν ανακτηθεί. Αυτό είναι δυνατό χρησιμοποιώντας τη μέθοδο find() της σύνδεσης mongoDB (db) και επαναλαμβάνοντας όλα τα έγγραφα χρησιμοποιώντας τον κέρσορα.
  1. Εισαγωγή εγγράφων σε μια συλλογή – Τα έγγραφα μπορούν να εισαχθούν σε μια συλλογή χρησιμοποιώντας τη μέθοδο insertOne που παρέχεται από το MongoDB βιβλιοθήκη. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορούμε να εισαγάγουμε ένα έγγραφο σε μια συλλογή mongoDB.

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

db.collection('Employee').insertOne({
Employeeid: 4,
EmployeeName: "NewEmployee"
});
});

Code Επεξήγηση:

  1. Εδώ χρησιμοποιούμε τη μέθοδο insertOne από το MongoDB βιβλιοθήκη για να εισαγάγετε ένα έγγραφο στη συλλογή Employee.
  2. Καθορίζουμε τις λεπτομέρειες του εγγράφου για το τι πρέπει να εισαχθεί στη συλλογή Υπαλλήλων.

Εάν τώρα ελέγξετε τα περιεχόμενα του MongoDB βάση δεδομένων, θα βρείτε την εγγραφή με Employeeid of 4 και EmployeeName του "NewEmployee" που έχουν εισαχθεί στη συλλογή Employee.

Σημείωση: Η κονσόλα δεν θα εμφανίσει καμία έξοδο επειδή η εγγραφή εισάγεται στη βάση δεδομένων και δεν μπορεί να εμφανιστεί καμία έξοδος εδώ.

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

  1. Χρησιμοποιήστε EmployeeDB
  2. db.Employee.find({Employeeid :4 })

Η πρώτη δήλωση διασφαλίζει ότι είστε συνδεδεμένοι στη βάση δεδομένων EmployeeDb. Η δεύτερη δήλωση αναζητά την εγγραφή που έχει το αναγνωριστικό υπαλλήλου 4.

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

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

db.collection('Employee').updateOne({
"EmployeeName": "NewEmployee"
}, {
$set: {
"EmployeeName": "Mohan"
}
});
});

Code Επεξήγηση:

  1. Εδώ χρησιμοποιούμε τη μέθοδο "updateOne" από το MongoDB βιβλιοθήκη, η οποία χρησιμοποιείται για την ενημέρωση ενός εγγράφου σε μια συλλογή mongoDB.
  2. Καθορίζουμε τα κριτήρια αναζήτησης για το ποιο έγγραφο πρέπει να ενημερωθεί. Στην περίπτωσή μας, θέλουμε να βρούμε το έγγραφο που έχει το EmployeeName του "NewEmployee".
  3. Στη συνέχεια, θέλουμε να ορίσουμε την τιμή του EmployeeName του εγγράφου από "NewEmployee" σε "Mohan".

Εάν τώρα ελέγξετε τα περιεχόμενα του MongoDB βάση δεδομένων, θα βρείτε την εγγραφή με Employeeid of 4 και EmployeeName του "Mohan" ενημερωμένα στη συλλογή Employee.

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

  1. Χρησιμοποιήστε EmployeeDB
  2. db.Employee.find({Employeeid :4 })

Η πρώτη δήλωση διασφαλίζει ότι είστε συνδεδεμένοι στη βάση δεδομένων EmployeeDb. Η δεύτερη δήλωση αναζητά την εγγραφή που έχει το αναγνωριστικό υπαλλήλου 4.

  1. Διαγραφή εγγράφων σε μια συλλογή – Τα έγγραφα μπορούν να διαγραφούν σε μια συλλογή χρησιμοποιώντας τη μέθοδο "deleteOne" που παρέχεται από το MongoDB βιβλιοθήκη. Το παρακάτω απόσπασμα κώδικα δείχνει πώς να διαγράψετε ένα έγγραφο σε μια συλλογή mongoDB.

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

db.collection('Employee').deleteOne(

{
"EmployeeName": "Mohan"
}

);
});

Code Επεξήγηση:

  1. Εδώ χρησιμοποιούμε τη μέθοδο "deleteOne" από το MongoDB βιβλιοθήκη, η οποία χρησιμοποιείται για τη διαγραφή ενός εγγράφου σε μια συλλογή mongoDB.
  2. Καθορίζουμε τα κριτήρια αναζήτησης για το ποιο έγγραφο πρέπει να διαγραφεί. Στην περίπτωσή μας, θέλουμε να βρούμε το έγγραφο που έχει το EmployeeName του "Mohan" και να διαγράψουμε αυτό το έγγραφο.

Εάν τώρα ελέγξετε τα περιεχόμενα του MongoDB βάση δεδομένων, θα βρείτε την εγγραφή με Employeeid of 4 και EmployeeName του "Mohan" διαγραμμένα από τη συλλογή Employee.

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

  1. Χρησιμοποιήστε EmployeeDB
  2. db.Employee.find()

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

Σύγχρονο Async/Await MongoDB Συνδέσεις στο Node.js

The MongoClient.connect(url, επανάκληση) το μοτίβο που χρησιμοποιείται σε όλο αυτό το άρθρο ταιριάζει με το MongoDB Η έκδοση του προγράμματος οδήγησης Node.js που ήταν ενημερωμένη όταν γράφτηκαν τα παραπάνω παραδείγματα. Οι πρόσφατες εκδόσεις προγραμμάτων οδήγησης εξακολουθούν να υποστηρίζουν αυτό το στυλ επανάκλησης, αλλά τα περισσότερα νέα έργα προτιμούν πλέον τις υποσχέσεις και την ασύγχρονη/αναμονή, επειδή ο κώδικας που προκύπτει διαβάζεται από πάνω προς τα κάτω χωρίς ένθετες επανάκλήσεις. Τα παρακάτω βήματα ξαναγράφουν την ίδια σύνδεση υπαλλήλου χρησιμοποιώντας τη σύγχρονη σύνταξη.

  1. Δημιουργήστε μια μοναδική παρουσία MongoClient εκτός οποιασδήποτε συνάρτησης, περνώντας τη συμβολοσειρά σύνδεσης μία φορά, για παράδειγμα const client = νέο MongoClient(url);
  2. Καλέστε αναμονή client.connect() μέσα σε μια ασύγχρονη συνάρτηση για να ανοίξει η σύνδεση αντί να περάσει μια επανάκληση.
  3. Αποκτήστε τη βάση δεδομένων με client.db('EmployeeDB') αντί να βασίζεστε στο αντικείμενο που επιστρέφεται μέσα σε μια επανάκληση.
  4. Εκτέλεση ερωτημάτων με αναμένω, Για παράδειγμα περιμένετε db.collection('Υπάλληλος').find().toArray(), το οποίο επιστρέφει απευθείας έναν πίνακα αντί να απαιτεί επανάκληση δρομέα.
  5. Κλείστε τη σύνδεση με περιμένετε client.close() μέσα σε ένα μπλοκ finally, ώστε να εκτελείται πάντα, ακόμα κι αν ένα ερώτημα εμφανίσει σφάλμα.
const { MongoClient } = require('mongodb');

const url = 'mongodb://localhost:27017';
const client = new MongoClient(url);

async function run() {
try {
await client.connect();
const db = client.db('EmployeeDB');
const employees = await db.collection('Employee').find().toArray();
console.log(employees);
} finally {
await client.close();
}
}

run().catch(console.error);

Και τα δύο στυλ συνδέονται στην ίδια βάση δεδομένων EmployeeDB και στην ίδια συλλογή Employee, επομένως ο υπάρχοντας κώδικας που βασίζεται σε επανάκληση δεν χρειάζεται να ξαναγραφεί αμέσως. Οι δύο προσεγγίσεις μπορούν να συνυπάρχουν κατά τη σταδιακή μετεγκατάσταση ενός έργου και η επιλογή εξαρτάται κυρίως από το ποια από τις δύο προσεγγίσεις. MongoDB Η έκδοση προγράμματος οδήγησης Node.js ενός αρχείου package.json έχει ήδη καρφιτσωθεί.

Πώς να δημιουργήσετε μια εφαρμογή node express με MongoDB για αποθήκευση και προβολή περιεχομένου

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

Όταν εργάζεστε με JavaΓραφή Σε εφαρμογές που βασίζονται στο web, συνήθως ακούει κανείς τον όρο MEAN stack.

  • Ο όρος MEAN stack αναφέρεται σε μια συλλογή από JavaΤεχνολογίες βασισμένες σε σενάρια που χρησιμοποιούνται για την ανάπτυξη διαδικτυακών εφαρμογών.
  • MEAN είναι ένα αρκτικόλεξο για MongoDB, ExpressJS, AngularJSκαι Node.js.

Ως εκ τούτου, είναι πάντα καλό να κατανοούμε πώς το Node.js και MongoDB συνεργαστείτε για να παραδώσετε εφαρμογές που αλληλεπιδρούν με βάσεις δεδομένων υποστήριξης.

Ας δούμε ένα απλό παράδειγμα για το πώς μπορούμε να χρησιμοποιήσουμε "express" και "MongoDB” μαζί. Το παράδειγμά μας θα κάνει χρήση της ίδιας συλλογής Υπαλλήλων στο MongoDB Βάση δεδομένων EmployeeDB.

Θα ενσωματώσουμε τώρα το Express για να εμφανίσουμε τα δεδομένα στην ιστοσελίδα μας όταν ζητηθούν από τον χρήστη. Όταν η εφαρμογή μας εκτελείται σε Node.js, ίσως χρειαστεί να περιηγηθείτε στο URL http://localhost:3000/Employeeid.

Όταν ξεκινήσει η σελίδα, θα εμφανιστεί όλο το αναγνωριστικό υπαλλήλου στη συλλογή Υπαλλήλων. Ας δούμε λοιπόν το απόσπασμα κώδικα σε ενότητες που θα μας επιτρέψουν να το πετύχουμε αυτό.

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

Code Επεξήγηση:

  1. Καθορίζουμε τη βιβλιοθήκη «express», η οποία θα χρησιμοποιηθεί στην εφαρμογή μας.
  2. Εμείς ορίζουμεMongoDB' βιβλιοθήκη, η οποία θα χρησιμοποιηθεί στην εφαρμογή μας για σύνδεση με το δικό μας MongoDB βάση δεδομένων.
  3. Εδώ ορίζουμε το URL της βάσης δεδομένων μας για σύνδεση.
  4. Τέλος, ορίζουμε μια συμβολοσειρά που θα χρησιμοποιηθεί για την αποθήκευση της συλλογής των αναγνωριστικών υπαλλήλων που πρέπει να εμφανιστούν αργότερα στο πρόγραμμα περιήγησης.

Βήμα 2) Σε αυτό το βήμα, θα λάβουμε τώρα όλες τις εγγραφές στη συλλογή "Εργαζόμενοι" και θα εργαστούμε μαζί τους ανάλογα.

Code Επεξήγηση:

  1. Δημιουργούμε μια διαδρομή προς την εφαρμογή μας που ονομάζεται 'Employeeid'. Έτσι, όποτε κάποιος περιηγηθεί σε http://localhost:3000/Employeeid της εφαρμογής μας, θα εκτελεστεί το απόσπασμα κώδικα που έχει οριστεί για αυτήν τη διαδρομή.
  2. Εδώ λαμβάνουμε όλες τις εγγραφές στη συλλογή μας 'Εργαζόμενος' μέσω της εντολής db.collection('Employee').find(). Στη συνέχεια, εκχωρούμε αυτή τη συλλογή σε μια μεταβλητή που ονομάζεται δρομέας. Χρησιμοποιώντας αυτήν τη μεταβλητή δρομέα, θα μπορούμε να περιηγηθούμε σε όλες τις εγγραφές της συλλογής.
  3. Τώρα χρησιμοποιούμε τη συνάρτηση cursor.each() για να πλοηγηθούμε σε όλες τις εγγραφές της συλλογής μας. Για κάθε εγγραφή, θα ορίσουμε ένα απόσπασμα κώδικα σχετικά με το τι πρέπει να κάνουμε όταν γίνεται πρόσβαση σε κάθε εγγραφή.
  4. Τέλος, βλέπουμε ότι εάν η εγγραφή που επιστράφηκε δεν είναι μηδενική, τότε παίρνουμε τον εργαζόμενο μέσω της εντολής "item.Employeeid". Ο υπόλοιπος κώδικας είναι απλώς για να δημιουργήσουμε έναν σωστό κώδικα HTML που θα επιτρέψει στα αποτελέσματά μας να εμφανίζονται σωστά στο πρόγραμμα περιήγησης.

Βήμα 3) Σε αυτό το βήμα, θα στείλουμε την έξοδο μας στην ιστοσελίδα και θα κάνουμε την εφαρμογή μας να ακούει σε μια συγκεκριμένη θύρα.

Code Επεξήγηση:

  1. Εδώ στέλνουμε ολόκληρο το περιεχόμενο που κατασκευάστηκε στο προηγούμενο βήμα στην ιστοσελίδα μας. Η παράμετρος 'res' μας επιτρέπει να στέλνουμε περιεχόμενο στην ιστοσελίδα μας ως απάντηση.
  2. Κάνουμε να ακούει ολόκληρη την εφαρμογή Node.js στη θύρα 3000.

Παραγωγή:

Από την έξοδο,

  • Δείχνει ξεκάθαρα ότι ανακτήθηκαν όλα τα μέλη της συλλογής Υπαλλήλων. Αυτό συμβαίνει επειδή χρησιμοποιούμε το MongoDB πρόγραμμα οδήγησης για να συνδεθείτε στη βάση δεδομένων και να ανακτήσετε όλες τις εγγραφές υπαλλήλων και στη συνέχεια χρησιμοποιήστε το "express" για την εμφάνιση των εγγραφών.

Εδώ είναι ο κωδικός για την αναφορά σας

var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
var str = "";

app.route('/Employeeid').get(function(req, res)

{
MongoClient.connect(url, function(err, db) {
var cursor = db.collection('Employee').find();
//noinspection JSDeprecatedSymbols
cursor.each(function(err, item) {

if (item != null) {
str = str + " Employee id " + item.Employeeid + "</br>";
}
});
res.send(str);
db.close();
});
});

var server = app.listen(3000, function() {});

Σημείωση: cursor.κάθε μπορεί να καταργηθεί με βάση την έκδοση του MongoDB οδηγός. Μπορείτε να προσαρτήσετε //noinspection JSDeprecatedSymbols πριν από το cursor.each για να παρακάμψετε το πρόβλημα. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το forEach. Παρακάτω είναι το δείγμα κώδικα που χρησιμοποιεί το forEach

var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
var str = "";

app.route('/Employeeid').get(function(req, res) {
MongoClient.connect(url, function(err, db) {
var collection = db.collection('Employee');
var cursor = collection.find({});
str = "";
cursor.forEach(function(item) {
if (item != null) {
str = str + "    Employee id  " + item.Employeeid + "</br>";
}
}, function(err) {
res.send(err);
db.close();
}
);
});
});
var server = app.listen(8080, function() {});

Συχνές Ερωτήσεις

Αντικαταστήστε την τοπική συμβολοσειρά σύνδεσης με τη συμβολοσειρά Atlas SRV από το παράθυρο διαλόγου Σύνδεση συμπλέγματος, για παράδειγμα mongodb+srv://user:password@cluster.mongodb.net/EmployeeDB και, στη συνέχεια, μεταβιβάστε την στο MongoDB Atlas ακριβώς όπως αναμένει η MongoClient.

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

Όχι. Δωρεάν MongoDB Το σύμπλεγμα Atlas λειτουργεί με κάθε παράδειγμα εδώ. Μόνο η συμβολοσειρά σύνδεσης αλλάζει, επομένως ένα τοπικό MongoDB Η εγκατάσταση του Community Server είναι προαιρετική και όχι υποχρεωτική.

Ναι, εργαλεία όπως GitHub Copilot μπορεί να κάνει γρήγορα draft find, insertOne ή updateOne κλήσεις, αλλά ένας προγραμματιστής θα πρέπει να επαληθεύσει τα ονόματα πεδίων, την έκδοση του προγράμματος οδήγησης και τον χειρισμό της σύνδεσης πριν εκτελέσει τον δημιουργημένο κώδικα.

Η επικόλληση του ακριβούς μηνύματος σφάλματος και της μορφής συμβολοσειράς σύνδεσης σε έναν βοηθό τεχνητής νοημοσύνης συχνά αναδεικνύει συνηθισμένες αιτίες, όπως η έλλειψη αναμονής, ο λανθασμένος αριθμός θύρας ή η μη επιτρεπόμενη διεύθυνση IP στην πρόσβαση δικτύου Atlas.

Συνοψίστε αυτήν την ανάρτηση με: