Non sarebbe un’esagerazione dire che negli ultimi mesi, Node.js e MongoDB hanno letteralmente preso l’industria del web come fosse una tempesta.
Non soltanto le start-up ma anche le medie e grandi imprese stanno utilizzando queste tecnologie per fornire esperienze migliori ai loro utenti creando applicazioni più capaci, performanti e scalabili.

Cos’è Node.js

Node.js è una piattaforma basata sul motore Javascript V8 di Chrome, per lo sviluppo rapido di applicazioni network scalabili. I modelli usati da Node.js lo rendono ideale per applicazioni real-time data-intensive che girano su dispositivi distribuiti.

Cos’è MongoDB

MongoDB è un database opensource di tipo NoSQL, scalabile e ad alte performance.

In questo articolo andremo a coprire le basi e fornire una guida di base per realizzare un applicativo che usi Node.js + MongoDB.
Dai rispettivi siti ufficiali possiamo scaricare i setup adatti al nostro sistema operativo. Diamo dunque per scontato che abbiate portato a termine correttamente l’installazione di Node.js e di MongoDB. Per verificarlo possiamo lanciare questi due comandi:

node -v
mongod

In particolare il secondo comando avvierà il server di MongoDB.

Introduzione a MongoJS

MongoJS è un package di Node.js che permette l’accesso a MongoDB usando delle API estremamente simili alla shell javascript di MongoDB.

Installare MongoJS

Una volta che Node.js è stato correttamente installato sulla nostra macchina, possiamo usare il suo gestore dei pacchetti interno (il NPM – Node Package Manager) per installare il modulo MongoJS che ci servirà per poter interagire con il nostro Database tramite un’app scritta per Node.js.

npm install mongojs

Possiamo dunque già iniziare a sviluppare la nostra applicazione in Javascript e connetterci al nostro server MongoDB:

// app.js
var databaseUrl = "mydb"; // "username:[email protected]/mydb"
var collections = ["users", "reports"]
var db = require("mongojs").connect(databaseUrl, collections);

La variabile databaseUrl può contenere l’host del server con la porta e il nome del database a cui vogliamo connetterci. Nel nostro caso usiamo i valori di default: l’host è “localhost” e la porta 27017.

La variabile collections è un insieme di dati (array) che la nostra app utilizza. Non è obbligatorio ma ci permette di emulare un client javascript come avviene nelle API di MongoDB all’interno della nostra app Node.js.

Qui sotto un esempio di chiamata al DB per trovare gli utenti di sesso Femminile:

// app.js
db.users.find({sex: "femmina"}, function(err, users) {
  if( err || !users) console.log("Nessun utente femmina trovato");
  else users.forEach( function(femaleUser) {
    console.log(femaleUser);
  } );
});

Notare come la nostra query sia praticamente identica alla query corrispondente nella console di MongoDB.
In aggiunta alla query, nel nostro codice passiamo una funzione di callback per gestire i risultati della query.

Node.js implementa un paradigma basato su eventi concorrenti e quindi praticamente tutto è un callback.
Questo permette all’app di non bloccarsi e di essere eseguita ad alte performance.

Quel che succede nella funzione di callback si spiega da se. Controlliamo i risultati e la presenza di errori e se vi sono risultati li stampiamo sulla console di Node.

Ora, come salviamo un nuovo utente nella nostra collezione? esattamente come si farebbe nella console di MongoDB:

// app.js
db.users.save({email: "[email protected]", password: "ciao123456", sex: "male"}, function(err, saved) {
  if( err || !saved ) console.log("Utente non salvato");
  else console.log("Utente salvato");
});

Qui invece un esempio per aggiornare un record:

// app.js
db.users.update({email: "[email protected]"}, {$set: {password: "nuova_password123"}}, function(err, updated) {
  if( err || !updated ) console.log("Utente non aggiornato");
  else console.log("Utente aggiornato");
});

Ora possiamo eseguire l’app tramite la console con:

node app.js

Questo è tutto per ora. Prossimamente andremo ad approfondire la questione. Per qualsiasi cosa, commentate!