Samouczek Node.js MongoDB z przykładami

Spisie treści:

Anonim

Większość współczesnych aplikacji internetowych ma na zapleczu jakiś system przechowywania danych. Na przykład, jeśli weźmiemy pod uwagę aplikację do zakupów internetowych, dane, takie jak cena towaru, zostaną zapisane w bazie danych.

Struktura Node js może współpracować z bazami danych zarówno z relacyjnymi (takimi jak Oracle i MS SQL Server), jak i nierelacyjnymi (takimi jak MongoDB). W tym samouczku zobaczymy, jak możemy używać baz danych z poziomu aplikacji Node js.

W tym samouczku nauczysz się:

  • Bazy danych Node.js i NoSQL
  • Korzystanie z MongoDB i Node.js.
  • Jak zbudować aplikację Node Express za pomocą MongoDB do przechowywania i obsługi treści

Bazy danych Node.js i NoSQL

Z biegiem lat bazy danych NoSQL, takie jak MongoDB i 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, czyni te bazy danych tak sławnymi.

Node.js może współpracować zarówno z MySQL, jak i MongoDB jako bazami danych. Aby użyć którejkolwiek z tych baz danych, musisz pobrać i używać wymaganych modułów za pomocą menedżera pakietów Node.

W przypadku MySQL wymagany moduł to „mysql”, a do korzystania z MongoDB wymagany do zainstalowania moduł to „Mongoose”.

Za pomocą tych modułów można wykonywać następujące operacje w Node.js.

  1. Zarządzaj pulą połączeń - tutaj możesz określić liczbę połączeń z bazą danych MySQL, które powinny być utrzymywane i zapisywane przez Node.js.
  2. Utwórz i zamknij połączenie z bazą danych. W obu przypadkach można udostępnić funkcję zwrotną, która może być wywoływana za każdym razem, gdy wykonywane są metody połączenia „create” i „close”.
  3. Zapytania mogą być wykonywane w celu pobrania danych z odpowiednich baz danych w celu pobrania danych.
  4. Manipulowanie danymi, takie jak wprowadzanie danych, usuwanie i aktualizowanie danych, można również osiągnąć za pomocą tych modułów.

W przypadku pozostałych tematów przyjrzymy się, jak możemy pracować z bazami danych MongoDB w Node.js.

Korzystanie z MongoDB i Node.js.

Jak omówiono we wcześniejszym temacie, MongoDB jest jedną z najpopularniejszych baz danych używanych wraz z Node.js.

W tym rozdziale zobaczymy

Jak możemy nawiązać połączenia z bazą danych MongoDB

Jak możemy wykonywać normalne operacje odczytu danych z bazy danych, a także wstawiania, usuwania i aktualizowania rekordów w bazie danych MongoDB.

Na potrzeby tego rozdziału załóżmy, że mamy przygotowane poniższe dane MongoDB.

Nazwa bazy danych: EmployeeDB

Nazwa kolekcji: Pracownik

Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
  1. 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ć moduł MongoDB, uruchom poniższe polecenie

npm zainstaluj mongodb

  1. Tworzenie i zamykanie połączenia z bazą danych MongoDB. Poniższy fragment kodu pokazuje, jak utworzyć i zamknąć połączenie z bazą danych MongoDB.

Objaśnienie kodu:

  1. Pierwszym krokiem jest dołączenie modułu mangusty, co jest realizowane poprzez funkcję require. Gdy ten moduł jest już na miejscu, możemy użyć niezbędnych funkcji dostępnych w tym module do tworzenia połączeń z bazą danych.
  2. Następnie określamy nasze parametry połączenia z bazą danych. W ciągu połączenia przekazywane są 3 wartości klucza.
  • Pierwszym jest „mongodb”, który określa, że ​​łączymy się z bazą danych mongoDB.
  • Następny to „localhost”, co oznacza, że ​​łączymy się z bazą danych na komputerze lokalnym.
  • Następna to „EmployeeDB”, czyli nazwa bazy danych zdefiniowanej w naszej bazie danych MongoDB.
  1. Następnym krokiem jest faktyczne połączenie się z naszą bazą danych. Funkcja connect pobiera nasz adres URL i ma możliwość określenia funkcji zwrotnej. Zostanie wywołana po otwarciu połączenia z bazą danych. Daje nam to możliwość sprawdzenia, czy połączenie z bazą danych się powiodło, czy nie.
  2. W funkcji wpisujemy do konsoli ciąg znaków „Połączenie ustanowione”, aby wskazać, że połączenie zostało utworzone pomyślnie.
  3. Na koniec zamykamy połączenie za pomocą instrukcji db.close.

Jeśli powyższy kod zostanie wykonany poprawnie, w konsoli zostanie zapisany ciąg „Connected”, jak pokazano poniżej.

  1. Zapytanie o dane w bazie danych MongoDB - Korzystając ze sterownika MongoDB możemy również pobrać dane z bazy MongoDB.

    Poniższa sekcja pokaże, jak możemy użyć sterownika do pobrania wszystkich dokumentów z naszej kolekcji Pracowników w naszej bazie danych EmployeeDB. Jest to zbiór w naszej bazie danych MongoDB, który zawiera wszystkie dokumenty pracownicze. Każdy dokument ma identyfikator obiektu, nazwę pracownika i identyfikator pracownika, które definiują 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);});}); 

Objaśnienie kodu:

  1. W pierwszym kroku tworzymy kursor (kursor jest wskaźnikiem używanym do wskazywania różnych rekordów pobranych z bazy danych. Kursor jest następnie używany do iteracji po różnych rekordach w bazie danych. Tutaj definiujemy nazwa zmiennej zwana kursorem, która będzie używana do przechowywania wskaźnika do rekordów pobranych z bazy danych.) wskazująca rekordy pobierane z kolekcji MongoDb. Mamy również możliwość określenia kolekcji „Pracownik”, z której mają być pobierane rekordy. Funkcja find () służy do określenia, że ​​chcemy pobrać wszystkie dokumenty z kolekcji MongoDB.

  2. Teraz przechodzimy przez nasz kursor i dla każdego dokumentu w kursorze wykonamy funkcję.

  3. Naszą funkcją jest po prostu wydrukowanie zawartości każdego dokumentu na konsoli.

Uwaga: - Możliwe jest również pobranie konkretnego rekordu z bazy danych. Można to zrobić, określając warunek wyszukiwania w funkcji find (). Na przykład załóżmy, że jeśli chcesz tylko pobrać rekord, który ma nazwisko pracownika Guru99, to oświadczenie to można zapisać w następujący sposób

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

Jeśli powyższy kod zostanie wykonany pomyślnie, w konsoli zostaną wyświetlone następujące dane wyjściowe.

Wynik:

Z wyjścia,

  • Będziesz mógł wyraźnie zobaczyć, że wszystkie dokumenty z kolekcji zostały pobrane. Jest to możliwe dzięki zastosowaniu metody find () połączenia mongoDB (db) i iteracji po wszystkich dokumentach za pomocą kursora.
  1. Wstawianie dokumentów do kolekcji - dokumenty można wstawiać do kolekcji za pomocą metody insertOne udostępnianej przez bibliotekę MongoDB. 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"});});

Objaśnienie kodu:

  1. Tutaj używamy metody insertOne z biblioteki MongoDB, aby wstawić dokument do kolekcji Employee.
  2. Określamy szczegóły dokumentu dotyczące tego, co należy wstawić do kolekcji Pracownik.

Jeśli teraz sprawdzisz zawartość swojej bazy danych MongoDB, znajdziesz rekord z identyfikatorem pracownika równym 4 i nazwą pracownika „NewEmployee” wstawiony do kolekcji Employee.

Uwaga: konsola nie pokaże żadnych danych wyjściowych, ponieważ rekord jest wstawiany do bazy danych i nie można tu wyświetlić żadnych danych wyjściowych.

Aby sprawdzić, czy dane zostały poprawnie wstawione do bazy danych, musisz wykonać następujące polecenia w MongoDB

  1. Użyj EmployeeDB
  2. 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.

  1. Aktualizowanie dokumentów w kolekcji - dokumenty można aktualizować w kolekcji przy użyciu metody updateOne udostępnianej przez bibliotekę MongoDB. 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"}});});

Objaśnienie kodu:

  1. Tutaj używamy metody „updateOne” z biblioteki MongoDB, która służy do aktualizacji dokumentu w kolekcji mongoDB.
  2. Określamy kryteria wyszukiwania, które dokumenty wymagają aktualizacji. W naszym przypadku chcemy znaleźć dokument o nazwie EmployeeName równą „NewEmployee”.
  3. Następnie chcemy ustawić wartość EmployeeName dokumentu z „NewEmployee” na „Mohan”.

Jeśli teraz sprawdzisz zawartość bazy danych MongoDB, w kolekcji Employee znajdziesz zaktualizowany rekord z identyfikatorem pracownika 4 i nazwą pracownika „Mohan”.

Aby sprawdzić, czy dane zostały poprawnie zaktualizowane w bazie danych, musisz wykonać następujące polecenia w MongoDB

  1. Użyj EmployeeDB
  2. 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.

  1. Usuwanie dokumentów w kolekcji - dokumenty można usuwać w kolekcji za pomocą metody „deleteOne” udostępnianej przez bibliotekę MongoDB. Poniższy fragment kodu pokazuje, jak usunąć dokument z kolekcji mongoDB.

var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});

Objaśnienie kodu:

  1. Tutaj używamy metody „deleteOne” z biblioteki MongoDB, która służy do usuwania dokumentu z kolekcji mongoDB.
  2. Określamy kryteria wyszukiwania, które dokumenty mają zostać usunięte. W naszym przypadku chcemy znaleźć dokument, który ma nazwę pracownika „Mohan” i usunąć ten dokument.

Jeśli teraz sprawdzisz zawartość bazy danych MongoDB, znajdziesz rekord z identyfikatorem pracownika 4 i nazwą pracownika „Mohan” usunięty z kolekcji Employee.

Aby sprawdzić, czy dane zostały poprawnie zaktualizowane w bazie danych, musisz wykonać następujące polecenia w MongoDB

  1. Użyj EmployeeDB
  2. db.Employee.find ()

Pierwsza instrukcja zapewnia połączenie z bazą danych EmployeeDb. Druga instrukcja wyszukuje i wyświetla wszystkie rekordy w kolekcji pracowników. Tutaj możesz sprawdzić, czy rekord został usunięty, czy nie.

Jak zbudować aplikację Node Express za pomocą MongoDB do przechowywania i obsługi treści

Tworzenie aplikacji z połączeniem zarówno z wykorzystaniem express, jak i MongoDB jest obecnie dość powszechne.

Podczas pracy z aplikacjami internetowymi opartymi na JavaScript, zwykle używa się tutaj terminu MEAN stos.

  • Termin MEAN stack odnosi się do zbioru technologii opartych na JavaScript używanych do tworzenia aplikacji internetowych.
  • MEAN to akronim MongoDB, ExpressJS, AngularJS i Node.js.

Dlatego zawsze dobrze jest zrozumieć, w jaki sposób Node.js i MongoDB współpracują ze sobą, aby dostarczać aplikacje, które współdziałają z bazami danych zaplecza.

Spójrzmy na prosty przykład, w jaki sposób możemy używać razem wyrażeń „express” i „MongoDB”. Nasz przykład wykorzysta tę samą kolekcję Employee w bazie danych MongoDB EmployeeDB.

Teraz włączymy Express do wyświetlania danych na naszej stronie internetowej, gdy zażąda tego użytkownik. Gdy nasza aplikacja działa na 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 więc fragment kodu w sekcjach, które pozwolą nam to osiągnąć.

Krok 1) Zdefiniuj wszystkie biblioteki, które mają być używane w naszej aplikacji, czyli w naszym przypadku zarówno MongoDB, jak i Express.

Objaśnienie kodu:

  1. Definiujemy naszą „ekspresową” bibliotekę, która będzie używana w naszej aplikacji.
  2. Definiujemy naszą „ekspresową” bibliotekę, która będzie używana w naszej aplikacji do łączenia się z naszą bazą danych MongoDB.
  3. Tutaj definiujemy adres URL naszej bazy danych, z którą mamy się połączyć.
  4. Na koniec definiujemy ciąg znaków, który będzie używany do przechowywania naszej kolekcji identyfikatorów pracowników, które będą później wyświetlane w przeglądarce.

Krok 2) Na tym etapie pobierzemy teraz wszystkie rekordy z naszej kolekcji „Pracownik” i będziemy z nimi odpowiednio pracować.

Objaśnienie kodu:

  1. Tworzymy trasę do naszej aplikacji o nazwie „Employeeid”. Więc za każdym razem, gdy ktoś przejdzie do http: // localhost: 3000 / Employeeid naszej aplikacji, zostanie wykonany fragment kodu zdefiniowany dla tej trasy.
  2. Tutaj pobieramy wszystkie rekordy z naszej kolekcji „Pracownik” za pomocą polecenia db.collection („Pracownik”). Find (). Następnie przypisujemy tę kolekcję do zmiennej zwanej kursorem. Używając tej zmiennej kursora, będziemy mogli przeglądać wszystkie rekordy kolekcji.
  3. Używamy teraz funkcji kursor.each () do poruszania się po wszystkich rekordach naszej kolekcji. Dla każdego rekordu zamierzamy zdefiniować fragment kodu określający, co należy zrobić, gdy uzyskuje się dostęp do każdego rekordu.
  4. Wreszcie widzimy, że jeśli zwrócony rekord nie jest pusty, to bierzemy pracownika za pomocą polecenia „item.Employeeid”. Reszta kodu to po prostu skonstruowanie odpowiedniego kodu HTML, który pozwoli na poprawne 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 nasłuchuje na określonym porcie.

Objaśnienie kodu:

  1. W tym miejscu wysyłamy całą treść, która została stworzona we wcześniejszym kroku na naszą stronę internetową. Parametr „res” umożliwia nam przesłanie treści na naszą stronę internetową w odpowiedzi.
  2. Sprawiamy, że cała nasza aplikacja Node.js nasłuchuje na porcie 3000.

Wynik:

Z wyjścia,

  • Wyraźnie pokazuje, że wszystkie identyfikatory pracowników w kolekcji Employee zostały pobrane. Dzieje się tak, ponieważ używamy sterownika MongoDB do łączenia się z bazą danych i pobierania wszystkich rekordów pracowników, a następnie używamy „express” do wyświetlania 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 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() {});

Uwaga: kursor.each może być przestarzały w zależności od wersji sterownika MongoDB. Możesz dołączyć // 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 + "
";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});

Podsumowanie

  • Node.js jest używany w połączeniu z bazami danych NoSQL do tworzenia wielu nowoczesnych aplikacji internetowych. Niektóre z najczęściej używanych baz danych to MySQL i MongoDB.
  • Jednym z popularnych modułów używanych do pracy z bazami danych MongoDB jest moduł o nazwie „MongoDB”. Ten moduł jest instalowany za pośrednictwem menedżera pakietów Node.
  • Dzięki modułowi MongoDB można wyszukiwać rekordy w kolekcji i wykonywać zwykłe operacje aktualizacji, usuwania i wstawiania.
  • Wreszcie, jedną z nowoczesnych praktyk jest używanie frameworka ekspresowego wraz z MongoDB do dostarczania nowoczesnych aplikacji. Framework Express może wykorzystywać dane zwrócone przez sterownik MongoDB i odpowiednio wyświetlać dane użytkownikowi na stronie internetowej.