node.js MongoDB Samouczek z przykładami
Przeważnie wszystkie współczesne aplikacje internetowe mają jakiś system przechowywania danych na zapleczu. Na przykład, jeśli weźmiemy pod uwagę aplikację do zakupów internetowych, dane takie jak cena artykułu będą przechowywane w bazie danych.
Framework Node js może współpracować z bazami danych zarówno relacyjnymi (takimi jak Oracle i MS SQL Server) oraz nierelacyjne bazy danych (takie jak MongoDB). W tym samouczku zobaczymy, jak możemy korzystać z baz danych z poziomu aplikacji Node js.
Bazy danych Node.js i NoSQL
Z biegiem lat baza danych NoSQL, taka jak MongoDB i dla MySQL stały się dość popularne jako bazy danych do przechowywania danych. Zdolność tych baz danych do przechowywania dowolnego rodzaju treści, a zwłaszcza w dowolnym formacie, sprawia, że te bazy danych są tak znane.
Node.js może współpracować z obydwoma MySQL oraz MongoDB jako bazy danych. Aby korzystać z którejkolwiek z tych baz danych, należy pobrać i używać wymaganych modułów za pomocą menedżera pakietów Node.
Dla litu szacuje się MySQLwymagany moduł nazywa się „mysql” i do jego użycia MongoDB wymagany moduł do zainstalowania to „Mongoose”.
Za pomocą tych modułów możesz wykonywać następujące operacje w Node.js
- Zarządzaj pulą połączeń – tutaj możesz określić liczbę MySQL połączenia z bazami danych, które powinny być utrzymywane i zapisywane przez Node.js.
- Utwórz i zamknij połączenie z bazą danych. W obu przypadkach możesz udostępnić funkcję wywołania zwrotnego, którą można wywołać za każdym razem, gdy wykonywane są metody połączenia „utwórz” i „zamknij”.
- Można wykonywać zapytania, aby uzyskać dane z odpowiednich baz danych w celu pobrania danych.
- Za pomocą tych modułów można również manipulować danymi, np. wprowadzać, usuwać i aktualizować dane.
W przypadku pozostałych tematów zastanowimy się, jak możemy z nimi pracować MongoDB bazy danych w ramach node.js.
Korzystanie z MongoDB i Node.js
Jak wspomniano we wcześniejszym temacie, MongoDB to jedna z najpopularniejszych baz danych używanych wraz z Node.js.
W tym rozdziale zobaczymy
Jak możemy nawiązać połączenie z a MongoDB baza danych
W jaki sposób możemy wykonywać normalne operacje odczytu danych z bazy danych, a także wstawiania, usuwania i aktualizowania rekordów w bazie danych? MongoDB Baza danych.
Na potrzeby tego rozdziału załóżmy, że mamy poniżej MongoDB dane na miejscu.
Nazwa bazy danych: EmployeeDB
Nazwa kolekcji: Pracownik
Documents { {Employeeid : 1, Employee Name : Guru99}, {Employeeid : 2, Employee Name : Joe}, {Employeeid : 3, Employee Name : Martin}, }
- Instalowanie modułów NPM
Aby uzyskać dostęp do Mongo z poziomu aplikacji Node, potrzebujesz sterownika. Dostępnych jest wiele sterowników Mongo, ale MongoDB należy do najpopularniejszych. Aby zainstalować MongoDB moduł, uruchom poniższe polecenie
npm zainstaluj mongodb
- Tworzenie i zamykanie połączenia z a MongoDB Baza danych. Poniższy fragment kodu pokazuje, jak utworzyć i zamknąć połączenie z plikiem a MongoDB Baza danych.
Wyjaśnienie kodu:
- Pierwszym krokiem jest włączenie modułu mangusty, co odbywa się za pomocą funkcji require. Po wdrożeniu tego modułu możemy wykorzystać niezbędne funkcje dostępne w tym module do tworzenia połączeń z bazą danych.
- Następnie określamy parametry połączenia z bazą danych. W ciągu łączącym przekazywane są 3 wartości kluczy.
- Pierwszym z nich jest „mongodb”, który określa, że łączymy się z bazą danych mongoDB.
- Następnym krokiem jest „localhost”, co oznacza, że łączymy się z bazą danych na komputerze lokalnym.
- Następnym krokiem jest „EmployeeDB”, czyli nazwa bazy danych zdefiniowanej w naszym pliku MongoDB Baza danych.
- Następnym krokiem jest faktyczne połączenie się z naszą bazą danych. Funkcja connect przyjmuje nasz adres URL i ma możliwość określenia funkcji wywołania zwrotnego. Zostanie ona wywołana, gdy połączenie z bazą danych zostanie otwarte. Daje nam to możliwość sprawdzenia, czy połączenie z bazą danych powiodło się, czy nie.
- W funkcji zapisujemy do konsoli ciąg „Połączenie nawiązane” sygnalizujące, że połączenie zostało utworzone pomyślnie.
- Na koniec zamykamy połączenie za pomocą instrukcji db.close.
Jeżeli powyższy kod zostanie wykonany poprawnie, do konsoli zostanie zapisany ciąg „Connected”, jak pokazano poniżej.
- Zapytanie o dane w a MongoDB baza danych - Używając MongoDB sterownika możemy także pobrać dane z pliku MongoDB baza danych. Poniższa sekcja pokaże, jak możemy wykorzystać sterownik do pobrania wszystkich dokumentów z naszej kolekcji Pracowników w naszej bazie danych EmployeeDB. Oto kolekcja w naszej ofercie MongoDB baza danych, w której znajdują się wszystkie dokumenty związane z pracownikami. Każdy dokument ma identyfikator obiektu, nazwę pracownika i identyfikator pracownika w celu zdefiniowania wartości dokumentu.
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); }); });
Wyjaśnienie kodu:
- W pierwszym kroku tworzymy kursor (Kursor to wskaźnik, który służy do wskazywania różnych rekordów pobranych z bazy danych. Następnie kursor służy do iterowania po różnych rekordach w bazie danych. Tutaj definiujemy nazwę zmiennej o nazwie kursor, która będzie używana do przechowywania wskaźnika do rekordów pobranych z bazy danych.) wskazujący na rekordy pobrane z kolekcji MongoDb. Mamy również możliwość określenia kolekcji „Pracownik”, z której mają zostać pobrane rekordy. Funkcja find() służy do określenia, że chcemy pobrać wszystkie dokumenty z MongoDB Kolekcja.
- Teraz iterujemy po naszym kursorze i dla każdego dokumentu w kursorze wykonamy funkcję.
- Nasza funkcja po prostu wydrukuje zawartość każdego dokumentu na konsoli.
Uwaga: - Możliwe jest także pobranie konkretnego rekordu z bazy danych. Można to zrobić, określając warunek wyszukiwania w funkcji find(). Załóżmy na przykład, że chcesz pobrać rekord, którego nazwisko pracownika to Guru99, to instrukcję tę można zapisać w następujący sposób
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Jeśli powyższy kod zostanie wykonany poprawnie, na konsoli zostanie wyświetlony poniższy komunikat.
Wyjście:
Z wyjścia,
- Będziesz mógł wyraźnie zobaczyć, że wszystkie dokumenty z kolekcji są pobierane. Jest to możliwe dzięki użyciu metody find() połączenia mongoDB (db) i iteracji przez wszystkie dokumenty za pomocą kursora.
- Wstawianie dokumentów do kolekcji – Dokumenty można wstawiać do kolekcji za pomocą metody InsertOne udostępnianej przez MongoDB library. Poniższy fragment kodu pokazuje, jak możemy wstawić dokument do kolekcji 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" }); });
Wyjaśnienie kodu:
- Tutaj używamy metody InsertOne z MongoDB biblioteka, aby wstawić dokument do kolekcji Pracowników.
- Określamy szczegóły dokumentu dotyczące tego, co należy wstawić do kolekcji Pracownik.
Jeśli teraz sprawdzisz zawartość pliku MongoDB bazy danych, znajdziesz rekord z identyfikatorem pracownika wynoszącym 4 i nazwą pracownika „Nowy pracownik” wstawiony do kolekcji pracowników.
Uwaga: Konsola nie wyświetli żadnych wyników, ponieważ rekord jest wstawiany do bazy danych i nie można tutaj wyświetlić żadnych wyników.
Aby sprawdzić, czy dane zostały poprawnie wstawione do bazy danych, należy wykonać następujące polecenia: MongoDB
- Skorzystaj z bazy danych EmployeeDB
- db.Employee.find({Employeeid :4 })
Pierwsza instrukcja zapewnia połączenie z bazą danych EmployeeDb. Druga instrukcja wyszukuje rekord, który ma identyfikator pracownika równy 4.
- Aktualizacja dokumentów w kolekcji – Dokumenty można aktualizować w kolekcji za pomocą metody updateOne udostępnionej przez MongoDB library. Poniższy fragment kodu pokazuje, jak zaktualizować dokument w kolekcji 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" } }); });
Wyjaśnienie kodu:
- Tutaj używamy metody „updateOne” z pliku MongoDB biblioteka służąca do aktualizacji dokumentu w kolekcji mongoDB.
- Określamy kryteria wyszukiwania, który dokument wymaga aktualizacji. W naszym przypadku chcemy znaleźć dokument, który ma nazwę pracownika „Nowy pracownik”.
- Następnie chcemy ustawić wartość EmployeeName dokumentu z „NewEmployee” na „Mohan”.
Jeśli teraz sprawdzisz zawartość pliku MongoDB bazy danych, w kolekcji Pracowników znajdziesz rekord z identyfikatorem pracownika wynoszącym 4 i nazwą pracownika „Mohan”.
Aby sprawdzić, czy dane w bazie danych zostały prawidłowo zaktualizowane, należy wykonać następujące polecenia: MongoDB
- Skorzystaj z bazy danych EmployeeDB
- db.Employee.find({Employeeid :4 })
Pierwsza instrukcja zapewnia połączenie z bazą danych EmployeeDb. Druga instrukcja wyszukuje rekord, który ma identyfikator pracownika równy 4.
- Usuwanie dokumentów w kolekcji – Dokumenty można usunąć w kolekcji za pomocą metody „deleteOne” udostępnionej przez MongoDB library. Poniższy fragment kodu pokazuje, jak usunąć dokument w kolekcji mongoDB.
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url, function(err, db) { db.collection('Employee').deleteOne( { "EmployeeName": "Mohan" } ); });
Wyjaśnienie kodu:
- Tutaj używamy metody „deleteOne” z pliku MongoDB biblioteka, która służy do usuwania dokumentu w kolekcji mongoDB.
- Określamy kryteria wyszukiwania, który dokument ma zostać usunięty. W naszym przypadku chcemy znaleźć dokument, który ma nazwę pracownika „Mohan” i usunąć ten dokument.
Jeśli teraz sprawdzisz zawartość pliku MongoDB bazie danych, znajdziesz rekord z identyfikatorem pracownika wynoszącym 4 i nazwą pracownika „Mohan” usunięty z kolekcji pracowników.
Aby sprawdzić, czy dane w bazie danych zostały prawidłowo zaktualizowane, należy wykonać następujące polecenia: MongoDB
- Skorzystaj z bazy danych EmployeeDB
- db.Pracownik.find()
Pierwsza instrukcja zapewnia połączenie z bazą danych EmployeeDb. Druga instrukcja przeszukuje i wyświetla wszystkie rekordy w kolekcji pracowników. Tutaj możesz sprawdzić, czy rekord został usunięty, czy nie.
Jak zbudować aplikację ekspresową węzła za pomocą MongoDB do przechowywania i udostępniania treści
Budowanie aplikacji z kombinacją zarówno przy użyciu ekspresu, jak i MongoDB jest obecnie dość powszechne.
Podczas pracy z JAVASCRIPT aplikacji internetowych, zwykle używa się tutaj terminu MEAN stos.
- Termin stos MEAN odnosi się do zbioru JavaTechnologie skryptowe wykorzystywane do tworzenia aplikacji internetowych.
- MEAN to skrót od MongoDB, ExpressJS, AngularJS, i Node.js.
Dlatego zawsze dobrze jest zrozumieć, w jaki sposób Node.js i MongoDB współpracować w celu dostarczania aplikacji, które wchodzą w interakcję z bazami danych zaplecza.
Spójrzmy na prosty przykład użycia słów „ekspresowy” i „MongoDB" razem. W naszym przykładzie wykorzystamy tę samą kolekcję Pracowników w pliku MongoDB Baza danych pracowników.
Wprowadzimy teraz usługę Express do wyświetlania danych na naszej stronie internetowej, gdy użytkownik o to poprosi. Gdy nasza aplikacja działa w Node.js, może być konieczne przejście do adresu URL http://localhost:3000/Employeeid.
Po uruchomieniu strony zostaną wyświetlone wszystkie identyfikatory pracowników w kolekcji Employee. Zobaczmy zatem fragment kodu w sekcjach, które pozwolą nam to osiągnąć.
Krok 1) Zdefiniuj wszystkie biblioteki, które mają zostać użyte w naszej aplikacji, czyli w naszym przypadku są to zarówno biblioteki MongoDB i biblioteka ekspresowa.
Wyjaśnienie kodu:
- Definiujemy naszą bibliotekę „ekspresową”, która będzie wykorzystywana w naszej aplikacji.
- Definiujemy naszeMongoDB', która będzie wykorzystywana w naszej aplikacji do łączenia się z naszymi MongoDB Baza danych.
- Tutaj definiujemy adres URL naszej bazy danych, z którą chcemy się połączyć.
- Na koniec definiujemy ciąg znaków, który będzie używany do przechowywania naszej kolekcji identyfikatorów pracowników, które później będą wyświetlane w przeglądarce.
Krok 2) Na tym etapie pobierzemy teraz wszystkie rekordy z naszej kolekcji „Pracownik” i odpowiednio z nimi będziemy pracować.
Wyjaśnienie kodu:
- Tworzymy trasę do naszej aplikacji o nazwie „Employeeid”. Więc ilekroć ktoś przegląda http://localhost:3000/Employeeid naszej aplikacji, zostanie wykonany fragment kodu zdefiniowany dla tej trasy.
- Tutaj pobieramy wszystkie rekordy z naszej kolekcji „Pracownik” za pomocą polecenia db.collection('Employee').find(). Następnie przypisujemy tę kolekcję do zmiennej zwanej kursorem. Za pomocą tej zmiennej kursorowej będziemy mogli przeglądać wszystkie rekordy kolekcji.
- Używamy teraz funkcji kursor.each() do poruszania się po wszystkich rekordach naszej kolekcji. Dla każdego rekordu zdefiniujemy fragment kodu opisujący, co należy zrobić w przypadku uzyskania dostępu do każdego rekordu.
- Na koniec widzimy, że jeśli zwrócony rekord nie jest nullem, to pobieramy pracownika za pomocą polecenia „item.Employeeid”. Reszta kodu to po prostu skonstruowanie poprawnego kodu HTML, który pozwoli na prawidłowe wyświetlanie naszych wyników w przeglądarce.
Krok 3) W tym kroku wyślemy nasze dane wyjściowe na stronę internetową i sprawimy, że nasza aplikacja będzie nasłuchiwać na określonym porcie.
Wyjaśnienie kodu:
- W tym miejscu przesyłamy na naszą stronę całą treść, która została zbudowana we wcześniejszym kroku. Parametr „res” pozwala nam w odpowiedzi wysłać treść na naszą stronę internetową.
- Sprawiamy, że cała nasza aplikacja Node.js nasłuchuje na porcie 3000.
Wyjście:
Z wyjścia,
- Wyraźnie pokazuje, że wszystkie identyfikatory pracownika w kolekcji Employee zostały odzyskane. Dzieje się tak dlatego, że używamy tzw MongoDB sterownik, aby połączyć się z bazą danych i pobrać wszystkie rekordy pracowników, a następnie użyć „ekspresowego” do wyświetlenia rekordów.
Oto kod w celach informacyjnych
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() {});
Uwaga: kursor.each może być przestarzały w zależności od wersji pliku MongoDB kierowca. Możesz dodać //noinspection JSDeprecatedSymbols przed kursorem.each, aby obejść problem. Alternatywnie możesz użyć forEach. Poniżej znajduje się przykładowy kod wykorzystujący 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() {});
Podsumowanie
- Node.js jest używany w połączeniu z NoSQL baz danych do tworzenia wielu współczesnych aplikacji internetowych. Niektóre z powszechnie używanych baz danych to MySQL oraz MongoDB.
- Jeden z popularnych modułów używanych do pracy z MongoDB baz danych to moduł o nazwie „MongoDB.' Moduł ten instaluje się poprzez menedżera pakietów Node.
- Z MongoDB Moduł ten umożliwia wyszukiwanie rekordów w kolekcji oraz wykonywanie standardowych operacji aktualizacji, usuwania i wstawiania.
- Wreszcie, jedną z nowoczesnych praktyk jest użycie frameworka ekspresowego wraz z MongoDB do dostarczania nowoczesnych aplikacji. Framework Express może korzystać z danych zwracanych przez MongoDB sterownik i odpowiednio wyświetlić dane użytkownikowi na stronie internetowej.