Quasi tutte le applicazioni web moderne hanno una sorta di sistema di archiviazione dei dati nel back-end. Ad esempio, se prendi il caso di un'applicazione di acquisto web, i dati come il prezzo di un articolo verrebbero memorizzati nel database.
Il framework Node js può funzionare con database sia relazionali (come Oracle e MS SQL Server) che non relazionali (come MongoDB). In questo tutorial, vedremo come possiamo utilizzare i database dalle applicazioni Node js.
In questo tutorial imparerai-
- Database Node.js e NoSQL
- Utilizzando MongoDB e Node.js
- Come creare un'app node express con MongoDB per archiviare e servire i contenuti
Database Node.js e NoSQL
Nel corso degli anni, i database NoSQL come MongoDB e MySQL sono diventati molto popolari come database per l'archiviazione dei dati. La capacità di questi database di memorizzare qualsiasi tipo di contenuto e in particolare in qualsiasi tipo di formato è ciò che rende questi database così famosi.
Node.js ha la capacità di lavorare sia con MySQL che con MongoDB come database. Per utilizzare uno di questi database, è necessario scaricare e utilizzare i moduli richiesti utilizzando il gestore di pacchetti Node.
Per MySQL, il modulo richiesto si chiama "mysql" e per usare MongoDB il modulo richiesto da installare è "Mongoose".
Con questi moduli, puoi eseguire le seguenti operazioni in Node.js
- Gestisci il pool di connessioni: qui puoi specificare il numero di connessioni al database MySQL che devono essere mantenute e salvate da Node.js.
- Crea e chiudi una connessione a un database. In entrambi i casi, è possibile fornire una funzione di callback che può essere chiamata ogni volta che vengono eseguiti i metodi di connessione "crea" e "chiudi".
- È possibile eseguire query per ottenere dati dai rispettivi database per recuperare i dati.
- Anche la manipolazione dei dati, come l'inserimento, l'eliminazione e l'aggiornamento dei dati, può essere ottenuta con questi moduli.
Per gli argomenti rimanenti, vedremo come lavorare con i database MongoDB all'interno di Node.js.
Utilizzando MongoDB e Node.js
Come discusso nell'argomento precedente, MongoDB è uno dei database più popolari utilizzati insieme a Node.js.
Durante questo capitolo vedremo
Come possiamo stabilire connessioni con un database MongoDB
Come possiamo eseguire le normali operazioni di lettura dei dati da un database, nonché l'inserimento, l'eliminazione e l'aggiornamento dei record in un database MongoDB.
Ai fini di questo capitolo, supponiamo di avere i seguenti dati MongoDB in atto.
Nome database: EmployeeDB
Nome raccolta: dipendente
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- Installazione dei moduli NPM
È necessario un driver per accedere a Mongo dall'interno di un'applicazione Node. Sono disponibili numerosi driver Mongo, ma MongoDB è tra i più popolari. Per installare il modulo MongoDB, esegui il comando seguente
npm installa mongodb
- Creazione e chiusura di una connessione a un database MongoDB. Il frammento di codice seguente mostra come creare e chiudere una connessione a un database MongoDB.
Spiegazione del codice:
- Il primo passo è includere il modulo mongoose, che viene eseguito tramite la funzione require. Una volta che questo modulo è a posto, possiamo usare le funzioni necessarie disponibili in questo modulo per creare connessioni al database.
- Successivamente, specifichiamo la nostra stringa di connessione al database. Nella stringa di connessione, ci sono 3 valori chiave che vengono passati.
- Il primo è "mongodb" che specifica che ci stiamo connettendo a un database mongoDB.
- Il prossimo è "localhost", il che significa che ci stiamo connettendo a un database sulla macchina locale.
- Il prossimo è "EmployeeDB", che è il nome del database definito nel nostro database MongoDB.
- Il passo successivo è connettersi effettivamente al nostro database. La funzione di connessione accetta il nostro URL e ha la possibilità di specificare una funzione di callback. Verrà chiamato quando verrà aperta la connessione al database. Questo ci dà l'opportunità di sapere se la connessione al database è andata a buon fine o meno.
- Nella funzione, stiamo scrivendo la stringa "Connessione stabilita" sulla console per indicare che è stata creata una connessione riuscita.
- Infine, stiamo chiudendo la connessione utilizzando l'istruzione db.close.
Se il codice precedente viene eseguito correttamente, la stringa "Connected" verrà scritta nella console come mostrato di seguito.
- Query di dati in un database MongoDB : utilizzando il driver MongoDB possiamo anche recuperare i dati dal database MongoDB.
La sezione seguente mostrerà come possiamo utilizzare il driver per recuperare tutti i documenti dalla nostra raccolta Employee nel nostro database EmployeeDB. Questa è la raccolta nel nostro database MongoDB, che contiene tutti i documenti relativi ai dipendenti. Ogni documento ha un ID oggetto, un nome dipendente e un ID dipendente per definire i valori del documento.
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);});});
Spiegazione del codice:
-
Nella prima fase, stiamo creando un cursore (Un cursore è un puntatore che viene utilizzato per puntare ai vari record recuperati da un database. Il cursore viene quindi utilizzato per scorrere i diversi record nel database. Qui stiamo definendo un nome della variabile chiamato cursore che verrà utilizzato per memorizzare il puntatore ai record recuperati dal database.) che punta ai record che vengono recuperati dalla raccolta MongoDb. Abbiamo anche la possibilità di specificare la raccolta "Employee" da cui recuperare i record. La funzione find () viene utilizzata per specificare che vogliamo recuperare tutti i documenti dalla raccolta MongoDB.
-
Ora stiamo iterando attraverso il nostro cursore e per ogni documento nel cursore eseguiremo una funzione.
-
La nostra funzione stamperà semplicemente il contenuto di ogni documento sulla console.
Nota: - È anche possibile recuperare un particolare record da un database. Questo può essere fatto specificando la condizione di ricerca nella funzione find (). Ad esempio, supponiamo di voler solo recuperare il record che ha il nome del dipendente come Guru99, allora questa dichiarazione può essere scritta come segue
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Se il codice precedente viene eseguito con successo, il seguente output verrà visualizzato nella tua console.
Produzione:
Dall'uscita,
- Potrai vedere chiaramente che tutti i documenti della collezione sono stati recuperati. Ciò è possibile utilizzando il metodo find () della connessione mongoDB (db) e iterando attraverso tutti i documenti utilizzando il cursore.
- Inserimento di documenti in una raccolta : i documenti possono essere inseriti in una raccolta utilizzando il metodo insertOne fornito dalla libreria MongoDB. Il frammento di codice seguente mostra come inserire un documento in una raccolta 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"});});
Spiegazione del codice:
- Qui stiamo usando il metodo insertOne dalla libreria MongoDB per inserire un documento nella raccolta Employee.
- Stiamo specificando i dettagli del documento di ciò che deve essere inserito nella raccolta Employee.
Se ora controlli il contenuto del tuo database MongoDB, troverai il record con Employeeid di 4 e EmployeeName di "NewEmployee" inserito nella raccolta Employee.
Nota: la console non mostrerà alcun output perché il record viene inserito nel database e nessun output può essere visualizzato qui.
Per verificare che i dati siano stati inseriti correttamente nel database, è necessario eseguire i seguenti comandi in MongoDB
- Usa EmployeeDB
- db.Employee.find ({Employeeid: 4})
La prima istruzione garantisce la connessione al database EmployeeDb. La seconda istruzione cerca il record con ID dipendente 4.
- Aggiornamento dei documenti in una raccolta : i documenti possono essere aggiornati in una raccolta utilizzando il metodo updateOne fornito dalla libreria MongoDB. Il frammento di codice seguente mostra come aggiornare un documento in una raccolta 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"}});});
Spiegazione del codice:
- Qui stiamo usando il metodo "updateOne" dalla libreria MongoDB, che viene utilizzato per aggiornare un documento in una raccolta mongoDB.
- Stiamo specificando i criteri di ricerca di quale documento deve essere aggiornato. Nel nostro caso, vogliamo trovare il documento che ha il EmployeeName di "NewEmployee".
- Vogliamo quindi impostare il valore di EmployeeName del documento da "NewEmployee" a "Mohan".
Se ora controlli il contenuto del tuo database MongoDB, troverai il record con Employeeid di 4 e EmployeeName di "Mohan" aggiornato nella raccolta Employee.
Per verificare che i dati siano stati correttamente aggiornati nel database, è necessario eseguire i seguenti comandi in MongoDB
- Usa EmployeeDB
- db.Employee.find ({Employeeid: 4})
La prima istruzione garantisce la connessione al database EmployeeDb. La seconda istruzione cerca il record con ID dipendente 4.
- Eliminazione di documenti in una raccolta - I documenti possono essere eliminati in una raccolta utilizzando il metodo "deleteOne" fornito dalla libreria MongoDB. Il frammento di codice seguente mostra come eliminare un documento in una raccolta mongoDB.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Spiegazione del codice:
- Qui stiamo usando il metodo "deleteOne" dalla libreria MongoDB, che viene utilizzato per eliminare un documento in una raccolta mongoDB.
- Stiamo specificando i criteri di ricerca di quale documento deve essere cancellato. Nel nostro caso, vogliamo trovare il documento che ha il EmployeeName di "Mohan" ed eliminare questo documento.
Se ora controlli il contenuto del tuo database MongoDB, troverai il record con Employeeid di 4 e EmployeeName di "Mohan" cancellato dalla raccolta Employee.
Per verificare che i dati siano stati correttamente aggiornati nel database, è necessario eseguire i seguenti comandi in MongoDB
- Usa EmployeeDB
- db.Employee.find ()
La prima istruzione garantisce la connessione al database EmployeeDb. La seconda istruzione cerca e visualizza tutti i record nella raccolta dei dipendenti. Qui puoi vedere se il record è stato cancellato o meno.
Come creare un'app node express con MongoDB per archiviare e servire i contenuti
La creazione di un'applicazione con una combinazione dell'uso di Express e MongoDB è abbastanza comune al giorno d'oggi.
Quando si lavora con applicazioni web basate su JavaScript, normalmente si parla di stack MEAN.
- Il termine stack MEAN si riferisce a una raccolta di tecnologie basate su JavaScript utilizzate per sviluppare applicazioni web.
- MEAN è l'acronimo di MongoDB, ExpressJS, AngularJS e Node.js.
Quindi, è sempre bene capire come Node.js e MongoDB lavorano insieme per fornire applicazioni che interagiscono con i database di backend.
Diamo un'occhiata a un semplice esempio di come possiamo usare "express" e "MongoDB" insieme. Il nostro esempio utilizzerà la stessa raccolta Employee nel database EmployeeDB di MongoDB.
Ora incorporeremo Express per visualizzare i dati sulla nostra pagina web quando richiesto dall'utente. Quando la nostra applicazione viene eseguita su Node.js, potrebbe essere necessario accedere all'URL http: // localhost: 3000 / Employeeid .
Quando la pagina viene avviata, verranno visualizzati tutti gli ID dei dipendenti nella raccolta Employee. Quindi vediamo lo snippet di codice nelle sezioni che ci permetteranno di raggiungere questo obiettivo.
Passaggio 1) Definisci tutte le librerie che devono essere utilizzate nella nostra applicazione, che nel nostro caso è sia MongoDB che libreria express.
Spiegazione del codice:
- Stiamo definendo la nostra libreria "express", che verrà utilizzata nella nostra applicazione.
- Stiamo definendo la nostra libreria "express", che verrà utilizzata nella nostra applicazione per la connessione al nostro database MongoDB.
- Qui stiamo definendo l'URL del nostro database a cui connetterci.
- Infine, stiamo definendo una stringa che verrà utilizzata per memorizzare la nostra raccolta di ID dipendente che devono essere visualizzati nel browser in seguito.
Passaggio 2) In questo passaggio, raccoglieremo tutti i record nella nostra raccolta "Dipendenti" e lavoreremo con essi di conseguenza.
Spiegazione del codice:
- Stiamo creando un percorso per la nostra applicazione chiamato "Employeeid". Quindi, ogni volta che qualcuno accede a http: // localhost: 3000 / Employeeid della nostra applicazione, verrà eseguito lo snippet di codice definito per questa rotta.
- Qui stiamo ottenendo tutti i record nella nostra raccolta 'Employee' tramite il comando db.collection ('Employee'). Find (). Stiamo quindi assegnando questa raccolta a una variabile chiamata cursore. Usando questa variabile cursore, saremo in grado di sfogliare tutti i record della collezione.
- Ora stiamo usando la funzione cursor.each () per navigare attraverso tutti i record della nostra raccolta. Per ogni record, definiremo uno snippet di codice su cosa fare quando si accede a ciascun record.
- Infine, vediamo che se il record restituito non è nullo, stiamo prendendo il dipendente tramite il comando "item.Employeeid". Il resto del codice serve solo a costruire un codice HTML appropriato che consentirà ai nostri risultati di essere visualizzati correttamente nel browser.
Passaggio 3) In questo passaggio, invieremo il nostro output alla pagina Web e faremo in modo che la nostra applicazione sia in ascolto su una particolare porta.
Spiegazione del codice:
- Qui stiamo inviando l'intero contenuto che è stato costruito nel passaggio precedente alla nostra pagina web. Il parametro "res" ci consente di inviare contenuti alla nostra pagina web come risposta.
- Stiamo facendo in modo che l'intera applicazione Node.js sia in ascolto sulla porta 3000.
Produzione:
Dall'uscita,
- Mostra chiaramente che sono stati recuperati tutti gli ID dei dipendenti nella raccolta dei dipendenti. Questo perché utilizziamo il driver MongoDB per connetterci al database e recuperare tutti i record dei dipendenti e successivamente abbiamo utilizzato "express" per visualizzare i record.
Ecco il codice per il tuo riferimento
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() {});
Nota: cursor.each potrebbe essere deprecato in base alla versione del tuo driver MongoDB. Puoi aggiungere // noinspection JSDeprecatedSymbols prima di cursor.each per aggirare il problema. In alternativa, puoi usare forEach. Di seguito è riportato il codice di esempio che utilizza 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() {});
Sommario
- Node.js viene utilizzato insieme ai database NoSQL per creare molte applicazioni web moderne. Alcuni dei database comuni utilizzati sono MySQL e MongoDB.
- Uno dei moduli comuni utilizzati per lavorare con i database MongoDB è un modulo chiamato "MongoDB". Questo modulo viene installato tramite il gestore di pacchetti Node.
- Con il modulo MongoDB, è possibile interrogare i record in una raccolta ed eseguire le normali operazioni di aggiornamento, eliminazione e inserimento.
- Infine, una delle pratiche moderne consiste nell'utilizzare il framework express insieme a MongoDB per fornire applicazioni moderne. Il framework Express può utilizzare i dati restituiti dal driver MongoDB e visualizzare i dati all'utente nella pagina web di conseguenza.