Node.js MongoDB Tutorial con esempi

Quasi tutte le applicazioni web moderne hanno una sorta di sistema di archiviazione dei dati nel backend. Ad esempio, se si prende il caso di un'applicazione di shopping web, dati come il prezzo di un articolo verrebbero archiviati nel database.

Il framework Node js può funzionare con database sia relazionali (come Oracle e MS SQL Server) e database non relazionali (come MongoDB). In questo tutorial vedremo come utilizzare i database dalle applicazioni Node js.

Database Node.js e NoSQL

Nel corso degli anni, database NoSQL come MongoDB e per MySQL sono diventati molto popolari come database per l'archiviazione dei dati. La capacità di questi database di archiviare qualsiasi tipo di contenuto e soprattutto in qualsiasi tipo di formato è ciò che rende questi database così famosi.

Node.js ha la capacità di lavorare con entrambi MySQL che a MongoDB come database. Per utilizzare uno di questi database, è necessario scaricare e utilizzare i moduli richiesti utilizzando il gestore pacchetti Node.

Per MySQL, il modulo richiesto si chiama “mysql” e per l'utilizzo MongoDB il modulo richiesto da installare è “Mongoose”.

Con questi moduli puoi eseguire le seguenti operazioni in Node.js

  1. Gestisci il pool di connessioni: qui puoi specificare il numero di MySQL connessioni al database che dovrebbero essere mantenute e salvate da Node.js.
  2. Creare e chiudere una connessione a un database. In entrambi i casi, è possibile fornire una funzione di callback che può essere richiamata ogni volta che vengono eseguiti i metodi di connessione "crea" e "chiudi".
  3. È possibile eseguire query per ottenere dati dai rispettivi database per recuperare i dati.
  4. Con questi moduli è possibile anche manipolare i dati, come l'inserimento, l'eliminazione e l'aggiornamento dei dati.

Per gli argomenti rimanenti, vedremo come possiamo lavorare MongoDB database all'interno Node.js.

utilizzando MongoDB e Node.js

Come discusso nell'argomento precedente, MongoDB è uno dei database più popolari utilizzati insieme a Node.js.

Nel corso di questo capitolo vedremo

Come possiamo stabilire connessioni con a MongoDB banca dati

Come possiamo eseguire le normali operazioni di lettura dei dati da un database nonché di inserimento, cancellazione e aggiornamento dei record in un MongoDB Banca dati.

Ai fini di questo capitolo, supponiamo di avere quanto segue MongoDB dati in atto.

Nome del database: EmployeeDB

Nome della raccolta: Dipendente

Documents
{
	{Employeeid : 1, Employee Name : Guru99},
	{Employeeid : 2, Employee Name : Joe},
	{Employeeid : 3, Employee Name : Martin},
}
  1. Installazione dei moduli NPM

Hai bisogno di un driver per accedere a Mongo dall'interno di un'applicazione Node. Sono disponibili numerosi driver Mongo, ma MongoDB è tra i più apprezzati. Per installare il MongoDB modulo, esegui il comando seguente

npm installa mongodb

  1. Creazione e chiusura di una connessione a a MongoDB Banca dati. Il frammento di codice seguente mostra come creare e chiudere una connessione a a MongoDB Banca dati.

utilizzando MongoDB e Node.js

Spiegazione del codice:

  1. Il primo passo è includere il modulo mongoose, operazione eseguita tramite la funzione require. Una volta installato questo modulo, possiamo utilizzare le funzioni necessarie disponibili in questo modulo per creare connessioni al database.
  2. Successivamente, specifichiamo la nostra stringa di connessione al database. Nella stringa di connessione vengono passati 3 valori chiave.
  • Il primo è "mongodb" che specifica che ci stiamo connettendo a un database mongoDB.
  • Il successivo è "localhost", il che significa che ci stiamo connettendo a un database sul computer locale.
  • Il successivo è 'EmployeeDB' che è il nome del database definito nel ns MongoDB Banca dati.
  1. Il prossimo passo è 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 viene aperta la connessione al database. Questo ci dà l'opportunità di sapere se la connessione al database ha avuto successo o meno.
  2. Nella funzione scriviamo la stringa "Connessione stabilita" sulla console per indicare che è stata creata una connessione riuscita.
  3. Infine, chiudiamo la connessione utilizzando l'istruzione db.close.

Se il codice precedente viene eseguito correttamente, la stringa "Connesso" verrà scritta sulla console come mostrato di seguito.

utilizzando MongoDB e Node.js

  1. Richiesta di dati in a MongoDB banca dati - Usando il MongoDB driver possiamo anche recuperare i dati dal file MongoDB database. La sezione seguente mostrerà come possiamo utilizzare il driver per recuperare tutti i documenti dalla nostra raccolta Employee nel nostro database EmployeeDB. Questa è la collezione nel ns MongoDB database, 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.

utilizzando MongoDB e Node.js

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:

  1. Nel primo passaggio, creiamo 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 di 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 dal MongoDB raccolta.
  2. Ora stiamo scorrendo il nostro cursore e per ogni documento nel cursore eseguiremo una funzione.
  3. La nostra funzione stamperà semplicemente il contenuto di ciascun 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 che tu voglia semplicemente recuperare il record che ha il nome del dipendente come Guru99, questa istruzione può essere scritta come segue

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

Se il codice sopra riportato viene eseguito correttamente, nella console verrà visualizzato il seguente output.

Produzione:

utilizzando MongoDB e Node.js

Dall'uscita,

  • Potrai vedere chiaramente che tutti i documenti della raccolta sono stati recuperati. Ciò è possibile utilizzando il metodo find() della connessione mongoDB (db) e scorrendo tutti i documenti utilizzando il cursore.
  1. Inserimento di documenti in una raccolta – I documenti possono essere inseriti in una raccolta utilizzando il metodo insertOne fornito da MongoDB library. Il frammento di codice sottostante mostra come possiamo inserire un documento in una raccolta mongoDB.

utilizzando MongoDB e Node.js

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:

  1. Qui stiamo utilizzando il metodo insertOne da MongoDB libreria per inserire un documento nella raccolta Employee.
  2. Stiamo specificando i dettagli del documento che devono essere inseriti nella raccolta Employee.

Se ora controlli il contenuto del tuo MongoDB database, troverai il record con Employeeid pari a 4 e EmployeeName pari a "NewEmployee" inserito nella raccolta Employee.

Nota: La console non mostrerà alcun output perché il record viene inserito nel database e nessun output può essere mostrato qui.

Per verificare che i dati siano stati inseriti correttamente nel database, è necessario eseguire i seguenti comandi in MongoDB

  1. Utilizza EmployeeDB
  2. db.Dipendente.find({Dipendenteeid :4 })

La prima istruzione garantisce che tu sia connesso al database EmployeeDb. La seconda istruzione cerca il record con l'ID dipendente 4.

  1. Aggiornamento dei documenti in una raccolta – I documenti possono essere aggiornati in una raccolta utilizzando il metodo updateOne fornito da MongoDB library. Il frammento di codice seguente mostra come aggiornare un documento in una raccolta mongoDB.

utilizzando MongoDB e Node.js

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:

  1. Qui stiamo utilizzando il metodo "updateOne" da MongoDB libreria, utilizzata per aggiornare un documento in una raccolta mongoDB.
  2. 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".
  3. Vogliamo quindi impostare il valore di EmployeeName del documento da "NewEmployee" a "Mohan".

Se ora controlli il contenuto del tuo MongoDB database, troverai il record con Employeeid di 4 e EmployeeName di "Mohan" aggiornato nella raccolta Employee.

Per verificare che i dati siano stati aggiornati correttamente nel database, è necessario eseguire i seguenti comandi in MongoDB

  1. Utilizza EmployeeDB
  2. db.Dipendente.find({Dipendenteeid :4 })

La prima istruzione garantisce che tu sia connesso al database EmployeeDb. La seconda istruzione cerca il record con l'ID dipendente 4.

  1. Eliminazione di documenti in una raccolta – I documenti possono essere eliminati in una raccolta utilizzando il metodo "deleteOne" fornito da MongoDB library. Il frammento di codice seguente mostra come eliminare un documento in una raccolta mongoDB.

utilizzando MongoDB e Node.js

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:

  1. Qui stiamo utilizzando il metodo "deleteOne" da MongoDB libreria, utilizzata per eliminare un documento in una raccolta mongoDB.
  2. Stiamo specificando i criteri di ricerca di quale documento deve essere eliminato. Nel nostro caso, vogliamo trovare il documento che ha il EmployeeName di "Mohan" ed eliminare questo documento.

Se ora controlli il contenuto del tuo MongoDB database, troverai il record con Employeeid pari a 4 e EmployeeName pari a "Mohan" eliminato dalla raccolta Employee.

Per verificare che i dati siano stati aggiornati correttamente nel database, è necessario eseguire i seguenti comandi in MongoDB

  1. Utilizza EmployeeDB
  2. db.Dipendente.trova()

La prima istruzione garantisce che tu sia connesso al database EmployeeDb. La seconda istruzione cerca e visualizza tutti i record nella raccolta dei dipendenti. Qui puoi vedere se il record è stato eliminato o meno.

Come creare un'app Node Express con MongoDB per archiviare e servire contenuti

Creazione di un'applicazione con una combinazione di entrambi utilizzando express e MongoDB è abbastanza comune al giorno d'oggi.

Quando si lavora con JavaCopione applicazioni basate sul web, normalmente qui si utilizzerà il termine MEAN stack.

  • Il termine stack MEAN si riferisce a una raccolta di JavaTecnologie basate su script utilizzate per sviluppare applicazioni web.
  • MEAN è l'acronimo di MongoDB, ExpressJS, AngularJS, e Node.js.

Quindi, è sempre bene capire come funziona Node.js e MongoDB lavorare insieme per fornire applicazioni che interagiscono con i database 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 file MongoDB Database EmployeeDB.

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 viene avviata la pagina, verranno visualizzati tutti gli ID dipendente nella raccolta Employee. Vediamo quindi lo snippet di codice nelle sezioni che ci permetteranno di raggiungere questo obiettivo.

Passo 1) Definire tutte le librerie che devono essere utilizzate nella nostra applicazione, che nel nostro caso è sia the MongoDB e biblioteca espressa.

Crea un'app Node Express con MongoDB

Spiegazione del codice:

  1. Stiamo definendo la nostra libreria 'espressa', che verrà utilizzata nella nostra applicazione.
  2. Stiamo definendo il nostro 'MongoDB', che verrà utilizzata nella nostra applicazione per la connessione al ns MongoDB Banca dati.
  3. Qui stiamo definendo l'URL del nostro database a cui connetterci.
  4. Infine, definiamo una stringa che verrà utilizzata per memorizzare la nostra raccolta di ID dipendenti che dovranno essere visualizzati nel browser in seguito.

Passo 2) In questo passaggio, otterremo tutti i record nella nostra raccolta "Dipendente" e lavoreremo con essi di conseguenza.

Crea un'app Node Express con MongoDB

Spiegazione del codice:

  1. Stiamo creando un percorso verso la nostra applicazione chiamata "Employeeid". Quindi ogni volta che qualcuno accede a http://localhost:3000/Employeeid della nostra applicazione, verrà eseguito lo snippet di codice definito per questa route.
  2. Qui stiamo ottenendo tutti i record nella nostra raccolta "Employee" tramite il comando db.collection('Employee').find(). Assegniamo quindi questa raccolta a una variabile chiamata cursore. Usando questa variabile cursore potremo sfogliare tutti i record della collezione.
  3. Ora stiamo utilizzando la funzione cursor.each() per navigare tra tutti i record della nostra raccolta. Per ogni record, definiremo uno snippet di codice su cosa fare quando si accede a ciascun record.
  4. Infine, vediamo che se il record restituito non è nullo, allora stiamo prelevando il dipendente tramite il comando “item.Employeeid”. Il resto del codice serve solo a costruire un codice HTML corretto che consentirà ai nostri risultati di essere visualizzati correttamente nel browser.

Passo 3) In questo passaggio, invieremo il nostro output alla pagina web e faremo in modo che la nostra applicazione sia in ascolto su una porta particolare.

Crea un'app Node Express con MongoDB

Spiegazione del codice:

  1. Qui stiamo inviando l'intero contenuto che è stato costruito nel passaggio precedente alla nostra pagina web. Il parametro 'res' ci consente di inviare contenuto alla nostra pagina web come risposta.
  2. Stiamo facendo in modo che la nostra intera applicazione Node.js sia in ascolto sulla porta 3000.

Produzione:

Crea un'app Node Express con MongoDB

Dall'uscita,

  • Mostra chiaramente che tutti gli EmployeeID nella raccolta Employee sono stati recuperati. Questo perché usiamo il file MongoDB driver per connettersi al database e recuperare tutti i record dei dipendenti e successivamente utilizzare "express" per visualizzare i record.

Ecco il codice come 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 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() {}); 

Nota: cursor.each potrebbe essere deprecato in base alla versione del tuo MongoDB autista. È possibile 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 + "</br>";
                }
       }, function(err) {
           res.send(err);
           db.close();
          }
       );
   });
});
var server = app.listen(8080, function() {});

Sommario

  • Node.js viene utilizzato insieme a NoSQL database per creare molte applicazioni web moderne. Alcuni dei database comuni utilizzati sono MySQL che a MongoDB.
  • Uno dei moduli comuni utilizzati per lavorare con MongoDB database è un modulo chiamato 'MongoDB.' Questo modulo viene installato tramite il gestore pacchetti Node.
  • Grazie alla MongoDB modulo, è possibile interrogare i record di una raccolta ed eseguire le normali operazioni di aggiornamento, eliminazione e inserimento.
  • Infine, una delle pratiche moderne è utilizzare il framework express insieme a MongoDB per fornire applicazioni moderne. Il framework Express può utilizzare i dati restituiti dal file MongoDB driver e visualizzare di conseguenza i dati all'utente nella pagina web.