Fast alle modernen Webanwendungen verfügen über ein Datenspeichersystem im Backend. Wenn Sie beispielsweise eine Web-Shopping-Anwendung verwenden, werden Daten wie der Preis eines Artikels in der Datenbank gespeichert.
Das Node js-Framework kann mit Datenbanken sowohl mit relationalen (wie Oracle und MS SQL Server) als auch mit nicht relationalen Datenbanken (wie MongoDB) arbeiten. In diesem Tutorial werden wir sehen, wie wir Datenbanken aus Node js-Anwendungen heraus verwenden können.
In diesem Tutorial lernen Sie:
- Node.js- und NoSQL-Datenbanken
- Verwenden von MongoDB und Node.js.
- Erstellen einer Node Express-App mit MongoDB zum Speichern und Bereitstellen von Inhalten
Node.js- und NoSQL-Datenbanken
Im Laufe der Jahre sind NoSQL-Datenbanken wie MongoDB und MySQL als Datenbanken zum Speichern von Daten sehr beliebt geworden. Die Fähigkeit dieser Datenbanken, jede Art von Inhalt und insbesondere jede Art von Format zu speichern, macht diese Datenbanken so berühmt.
Node.js kann sowohl mit MySQL als auch mit MongoDB als Datenbanken arbeiten. Um eine dieser Datenbanken verwenden zu können, müssen Sie die erforderlichen Module mithilfe des Node-Paketmanagers herunterladen und verwenden.
Für MySQL heißt das erforderliche Modul "mysql" und für die Verwendung von MongoDB muss "Mongoose" installiert werden.
Mit diesen Modulen können Sie die folgenden Operationen in Node.js ausführen
- Verbindungspooling verwalten - Hier können Sie die Anzahl der MySQL-Datenbankverbindungen angeben, die von Node.js verwaltet und gespeichert werden sollen.
- Erstellen und schließen Sie eine Verbindung zu einer Datenbank. In beiden Fällen können Sie eine Rückruffunktion bereitstellen, die aufgerufen werden kann, wenn die Verbindungsmethoden "Erstellen" und "Schließen" ausgeführt werden.
- Abfragen können ausgeführt werden, um Daten aus den jeweiligen Datenbanken zum Abrufen von Daten abzurufen.
- Mit diesen Modulen können auch Datenmanipulationen wie das Einfügen von Daten, das Löschen und Aktualisieren von Daten erreicht werden.
In den verbleibenden Themen werden wir untersuchen, wie wir mit MongoDB-Datenbanken in Node.js arbeiten können.
Verwenden von MongoDB und Node.js.
Wie bereits im vorherigen Thema erläutert, ist MongoDB neben Node.js eine der beliebtesten Datenbanken.
In diesem Kapitel werden wir sehen
Wie wir Verbindungen mit einer MongoDB-Datenbank herstellen können
Wie wir die normalen Vorgänge zum Lesen von Daten aus einer Datenbank sowie zum Einfügen, Löschen und Aktualisieren von Datensätzen in einer MongoDB-Datenbank ausführen können.
Für den Zweck dieses Kapitels nehmen wir an, dass die folgenden MongoDB-Daten vorhanden sind.
Datenbankname: EmployeeDB
Sammlungsname: Mitarbeiter
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- Installieren der NPM-Module
Sie benötigen einen Treiber, um über eine Node-Anwendung auf Mongo zuzugreifen. Es gibt eine Reihe von Mongo-Treibern, aber MongoDB gehört zu den beliebtesten. Führen Sie den folgenden Befehl aus, um das MongoDB-Modul zu installieren
npm mongodb installieren
- Erstellen und Schließen einer Verbindung zu einer MongoDB-Datenbank. Das folgende Codefragment zeigt, wie eine Verbindung zu einer MongoDB-Datenbank erstellt und geschlossen wird.
Code Erläuterung:
- Der erste Schritt besteht darin, das Mungomodul einzuschließen, was über die Anforderungsfunktion erfolgt. Sobald dieses Modul eingerichtet ist, können wir die in diesem Modul verfügbaren Funktionen verwenden, um Verbindungen zur Datenbank herzustellen.
- Als nächstes geben wir unsere Verbindungszeichenfolge zur Datenbank an. In der Verbindungszeichenfolge werden 3 Schlüsselwerte übergeben.
- Das erste ist 'mongodb', das angibt, dass wir eine Verbindung zu einer mongoDB-Datenbank herstellen.
- Der nächste ist 'localhost', was bedeutet, dass wir eine Verbindung zu einer Datenbank auf dem lokalen Computer herstellen.
- Das nächste ist 'EmployeeDB', der Name der Datenbank, die in unserer MongoDB-Datenbank definiert ist.
- Der nächste Schritt besteht darin, eine Verbindung zu unserer Datenbank herzustellen. Die Verbindungsfunktion nimmt unsere URL auf und bietet die Möglichkeit, eine Rückruffunktion anzugeben. Es wird aufgerufen, wenn die Verbindung zur Datenbank geöffnet wird. Dies gibt uns die Möglichkeit zu wissen, ob die Datenbankverbindung erfolgreich war oder nicht.
- In der Funktion schreiben wir die Zeichenfolge "Verbindung hergestellt" in die Konsole, um anzuzeigen, dass eine erfolgreiche Verbindung hergestellt wurde.
- Schließlich schließen wir die Verbindung mit der Anweisung db.close.
Wenn der obige Code ordnungsgemäß ausgeführt wird, wird die Zeichenfolge "Verbunden" wie unten gezeigt in die Konsole geschrieben.
- Abfragen von Daten in einer MongoDB-Datenbank - Mit dem MongoDB-Treiber können wir auch Daten aus der MongoDB-Datenbank abrufen.
Der folgende Abschnitt zeigt, wie wir mit dem Treiber alle Dokumente aus unserer Employee-Sammlung in unserer EmployeeDB-Datenbank abrufen können. Dies ist die Sammlung in unserer MongoDB-Datenbank, die alle mitarbeiterbezogenen Dokumente enthält. Jedes Dokument verfügt über eine Objekt-ID, einen Mitarbeiternamen und eine Mitarbeiter-ID, um die Werte des Dokuments zu definieren.
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 Erläuterung:
-
Im ersten Schritt erstellen wir einen Cursor (Ein Cursor ist ein Zeiger, der auf die verschiedenen aus einer Datenbank abgerufenen Datensätze verweist. Der Cursor wird dann verwendet, um die verschiedenen Datensätze in der Datenbank zu durchlaufen. Hier definieren wir a Variablenname namens Cursor, der zum Speichern des Zeigers auf die aus der Datenbank abgerufenen Datensätze verwendet wird.) Der auf die aus der MongoDb-Auflistung abgerufenen Datensätze verweist. Wir haben auch die Möglichkeit, die Sammlung 'Mitarbeiter' anzugeben, aus der die Datensätze abgerufen werden sollen. Mit der Funktion find () wird angegeben, dass alle Dokumente aus der MongoDB-Auflistung abgerufen werden sollen.
-
Wir durchlaufen jetzt unseren Cursor und führen für jedes Dokument im Cursor eine Funktion aus.
-
Unsere Funktion wird einfach den Inhalt jedes Dokuments auf der Konsole drucken.
Hinweis: - Es ist auch möglich, einen bestimmten Datensatz aus einer Datenbank abzurufen. Dies kann durch Angabe der Suchbedingung in der Funktion find () erfolgen. Angenommen, Sie möchten nur den Datensatz mit dem Mitarbeiternamen Guru99 abrufen, dann kann diese Anweisung wie folgt geschrieben werden
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Wenn der obige Code erfolgreich ausgeführt wurde, wird die folgende Ausgabe in Ihrer Konsole angezeigt.
Ausgabe:
Aus der Ausgabe,
- Sie können deutlich sehen, dass alle Dokumente aus der Sammlung abgerufen werden. Dies ist möglich, indem Sie die find () -Methode der mongoDB-Verbindung (db) verwenden und alle Dokumente mit dem Cursor durchlaufen.
- Einfügen von Dokumenten in eine Sammlung - Dokumente können mit der von der MongoDB-Bibliothek bereitgestellten Methode insertOne in eine Sammlung eingefügt werden. Das folgende Codefragment zeigt, wie wir ein Dokument in eine MongoDB-Sammlung einfügen können.
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 Erläuterung:
- Hier verwenden wir die insertOne-Methode aus der MongoDB-Bibliothek, um ein Dokument in die Employee-Auflistung einzufügen.
- Wir geben die Dokumentdetails an, die in die Mitarbeitersammlung eingefügt werden sollen.
Wenn Sie jetzt den Inhalt Ihrer MongoDB-Datenbank überprüfen, finden Sie den Datensatz mit der Employeeid 4 und dem EmployeeName "NewEmployee" in der Employee-Sammlung.
Hinweis: Die Konsole zeigt keine Ausgabe an, da der Datensatz in die Datenbank eingefügt wird und hier keine Ausgabe angezeigt werden kann.
Um zu überprüfen, ob die Daten ordnungsgemäß in die Datenbank eingefügt wurden, müssen Sie die folgenden Befehle in MongoDB ausführen
- Verwenden Sie EmployeeDB
- db.Employee.find ({Employeeid: 4})
Die erste Anweisung stellt sicher, dass Sie mit der EmployeeDb-Datenbank verbunden sind. Die zweite Anweisung sucht nach dem Datensatz mit der Mitarbeiter-ID 4.
- Aktualisieren von Dokumenten in einer Sammlung - Dokumente können in einer Sammlung mithilfe der von der MongoDB-Bibliothek bereitgestellten updateOne-Methode aktualisiert werden. Das folgende Codefragment zeigt, wie ein Dokument in einer MongoDB-Sammlung aktualisiert wird.
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 Erläuterung:
- Hier verwenden wir die "updateOne" -Methode aus der MongoDB-Bibliothek, mit der ein Dokument in einer MongoDB-Sammlung aktualisiert wird.
- Wir geben die Suchkriterien an, deren Dokument aktualisiert werden muss. In unserem Fall möchten wir das Dokument finden, das den EmployeeName "NewEmployee" hat.
- Wir möchten dann den Wert des EmployeeName des Dokuments von "NewEmployee" auf "Mohan" setzen.
Wenn Sie jetzt den Inhalt Ihrer MongoDB-Datenbank überprüfen, finden Sie den Datensatz mit Employeeid von 4 und EmployeeName von "Mohan" in der Employee-Sammlung aktualisiert.
Um zu überprüfen, ob die Daten in der Datenbank ordnungsgemäß aktualisiert wurden, müssen Sie die folgenden Befehle in MongoDB ausführen
- Verwenden Sie EmployeeDB
- db.Employee.find ({Employeeid: 4})
Die erste Anweisung stellt sicher, dass Sie mit der EmployeeDb-Datenbank verbunden sind. Die zweite Anweisung sucht nach dem Datensatz mit der Mitarbeiter-ID 4.
- Löschen von Dokumenten in einer Sammlung - Dokumente können in einer Sammlung mit der von der MongoDB-Bibliothek bereitgestellten Methode "deleteOne" gelöscht werden. Das folgende Codefragment zeigt, wie Sie ein Dokument in einer MongoDB-Sammlung löschen.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Code Erläuterung:
- Hier verwenden wir die "deleteOne" -Methode aus der MongoDB-Bibliothek, mit der ein Dokument in einer MongoDB-Sammlung gelöscht wird.
- Wir geben die Suchkriterien an, von denen das Dokument gelöscht werden muss. In unserem Fall möchten wir das Dokument mit dem Mitarbeiternamen "Mohan" suchen und dieses Dokument löschen.
Wenn Sie jetzt den Inhalt Ihrer MongoDB-Datenbank überprüfen, wird der Datensatz mit der Mitarbeiter-ID 4 und dem Mitarbeiternamen "Mohan" aus der Mitarbeitersammlung gelöscht.
Um zu überprüfen, ob die Daten in der Datenbank ordnungsgemäß aktualisiert wurden, müssen Sie die folgenden Befehle in MongoDB ausführen
- Verwenden Sie EmployeeDB
- db.Employee.find ()
Die erste Anweisung stellt sicher, dass Sie mit der EmployeeDb-Datenbank verbunden sind. Die zweite Anweisung durchsucht alle Datensätze in der Mitarbeitersammlung und zeigt sie an. Hier können Sie sehen, ob der Datensatz gelöscht wurde oder nicht.
Erstellen einer Node Express-App mit MongoDB zum Speichern und Bereitstellen von Inhalten
Das Erstellen einer Anwendung mit einer Kombination aus Express und MongoDB ist heutzutage weit verbreitet.
Bei der Arbeit mit webbasierten JavaScript-Anwendungen wird hier normalerweise der Begriff MEAN-Stack verwendet.
- Der Begriff MEAN-Stack bezieht sich auf eine Sammlung von JavaScript-basierten Technologien, die zur Entwicklung von Webanwendungen verwendet werden.
- MEAN ist eine Abkürzung für MongoDB, ExpressJS, AngularJS und Node.js.
Daher ist es immer gut zu verstehen, wie Node.js und MongoDB zusammenarbeiten, um Anwendungen bereitzustellen, die mit Backend-Datenbanken interagieren.
Schauen wir uns ein einfaches Beispiel an, wie wir "express" und "MongoDB" zusammen verwenden können. In unserem Beispiel wird dieselbe Employee-Sammlung in der MongoDB EmployeeDB-Datenbank verwendet.
Wir werden jetzt Express einbinden, um die Daten auf unserer Webseite anzuzeigen, wenn dies vom Benutzer angefordert wird. Wenn unsere Anwendung auf Node.js ausgeführt wird, müssen Sie möglicherweise zur URL http: // localhost: 3000 / Employeeid navigieren .
Wenn die Seite gestartet wird, werden alle Mitarbeiter-IDs in der Mitarbeitersammlung angezeigt. Sehen wir uns also das Code-Snippet in Abschnitten an, mit denen wir dies erreichen können.
Schritt 1) Definieren Sie alle Bibliotheken, die in unserer Anwendung verwendet werden müssen, in unserem Fall sowohl die MongoDB- als auch die Express-Bibliothek.
Code Erläuterung:
- Wir definieren unsere 'Express'-Bibliothek, die in unserer Anwendung verwendet wird.
- Wir definieren unsere 'Express'-Bibliothek, die in unserer Anwendung für die Verbindung mit unserer MongoDB-Datenbank verwendet wird.
- Hier definieren wir die URL unserer Datenbank, zu der eine Verbindung hergestellt werden soll.
- Schließlich definieren wir eine Zeichenfolge, in der unsere Sammlung von Mitarbeiter-IDs gespeichert wird, die später im Browser angezeigt werden müssen.
Schritt 2) In diesem Schritt werden wir nun alle Datensätze in unserer 'Mitarbeiter'-Sammlung abrufen und entsprechend damit arbeiten.
Code Erläuterung:
- Wir erstellen eine Route zu unserer Anwendung mit dem Namen "Employeeid". Wenn also jemand zu http: // localhost: 3000 / Employeeid unserer Anwendung navigiert , wird das für diese Route definierte Code-Snippet ausgeführt.
- Hier erhalten wir alle Datensätze in unserer 'Employee'-Sammlung über den Befehl db.collection (' Employee '). Find (). Wir weisen diese Sammlung dann einer Variablen namens Cursor zu. Mit dieser Cursor-Variablen können wir alle Datensätze der Sammlung durchsuchen.
- Wir verwenden jetzt die Funktion cursor.each (), um durch alle Datensätze unserer Sammlung zu navigieren. Für jeden Datensatz definieren wir ein Code-Snippet, was zu tun ist, wenn auf jeden Datensatz zugegriffen wird.
- Schließlich sehen wir, dass wir den Mitarbeiter über den Befehl "item.Employeeid" übernehmen, wenn der zurückgegebene Datensatz nicht null ist. Der Rest des Codes besteht lediglich darin, einen richtigen HTML-Code zu erstellen, mit dem unsere Ergebnisse im Browser korrekt angezeigt werden können.
Schritt 3) In diesem Schritt senden wir unsere Ausgabe an die Webseite und lassen unsere Anwendung einen bestimmten Port abhören.
Code Erläuterung:
- Hier senden wir den gesamten Inhalt, der im vorherigen Schritt erstellt wurde, an unsere Webseite. Mit dem Parameter 'res' können wir Inhalte als Antwort an unsere Webseite senden.
- Wir lassen unsere gesamte Node.js-Anwendung auf Port 3000 lauschen.
Ausgabe:
Aus der Ausgabe,
- Es wird deutlich, dass alle Mitarbeiter-IDs in der Mitarbeiter-Sammlung abgerufen wurden. Dies liegt daran, dass wir den MongoDB-Treiber verwenden, um eine Verbindung zur Datenbank herzustellen und alle Mitarbeiterdatensätze abzurufen. Anschließend verwenden wir "express", um die Datensätze anzuzeigen.
Hier ist der Code als Referenz
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 JSDeprecatedSymbolscursor.each(function(err, item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "";}});res.send(str);db.close();});});var server = app.listen(3000, function() {});
Hinweis: cursor.each ist möglicherweise aufgrund der Version Ihres MongoDB-Treibers veraltet. Sie können // noinspection JSDeprecatedSymbols vor cursor.each anhängen, um das Problem zu umgehen. Alternativ können Sie forEach verwenden. Unten finden Sie den Beispielcode für 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 + "";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});
Zusammenfassung
- Node.js wird in Verbindung mit NoSQL-Datenbanken verwendet, um viele moderne Webanwendungen zu erstellen. Einige der gängigen Datenbanken sind MySQL und MongoDB.
- Eines der gängigen Module für die Arbeit mit MongoDB-Datenbanken ist das Modul "MongoDB". Dieses Modul wird über den Node Package Manager installiert.
- Mit dem MongoDB-Modul ist es möglich, Datensätze in einer Sammlung abzufragen und die normalen Aktualisierungs-, Lösch- und Einfügevorgänge auszuführen.
- Schließlich besteht eine der modernen Praktiken darin, das Express-Framework zusammen mit MongoDB zu verwenden, um moderne Anwendungen bereitzustellen. Das Express-Framework kann die vom MongoDB-Treiber zurückgegebenen Daten verwenden und die Daten dem Benutzer auf der Webseite entsprechend anzeigen.