Débuter avec NodeJS, Express et MongoDB

Un collègue m’a parlé de différents projets personnels orientés web et de son dilemne sur le choix des techologies. Curieux j’ai voulu essayer NodeJS, Express et MongoDB.
Généralement, on parle de MEAN qui est l’acronyme de plusieurs technologies : MongoDB, Express, AngularJS et NodeJs. Pour ma découverte, j’ai remplacé AngularJS par jQuery mais sous le capot c’est identique.
C’est parti pour débuter avec NodeJS, Express et MongoDB.

MongoDB

MongoDB est un moteur de base de données orientée documents et de type NoSQL, contrairement aux serveurs de base de données que j’ai l’habitude d’utiliser (SQL Server, mysql, postgresql).
Je vous propose un rapide tour sachant que ce n’est pas le but de l’article.

Avant de commencer un peu de vocabulaire
base de données : base de données
table : collection
ligne/enregistrement : document
colonne : champ

MongoDB communique en JSON ce qui le rend facilement utilisable dans l’écosystème web. Les données sont stockées en JSON et les requêtes sont aussi faites avec ce langage. Il n’est donc pas nécessaire de connaitre le SQL.
La même collection peut contenir des documents avec des propriétés différentes. Il n’y a pas de structure de table ce qui peut être déstabilisant.

Lancer le serveur MongoDB


Serveur MongoDB

Comme vous serez amener à vous en servir souvent, le mieux est d’écrire un script pour faire ces actions (launchMongodb.bat).

Lancer le client MongoDB


Client MongoDB

Si vous souhaitez une GUI pour l’administration, vous trouverez une liste d’application à la page suivante : Documentation MongoDB – Admin UI

Documentation MongoDB – SQL to MongoDB Mapping Chart

NodeJS & Express

NodeJS open source et cross plateforme qui permet de faire des web développements coté serveur. Architecture orientée événement gérant les IO asynchrones.
Express est un framework pour nodejs permettant de construire des applications web et des API. Concrètement cela permet de développer plus rapidement une API REST:

  • CREATE : POST
  • GET : READ
  • UPDATE : PUT
  • DELETE : DELETE

Création du projet NodeJS.


Pour interagir entre NodeJS et MongoDB, il est possible d’utiliser le “driver” par défaut ou des surcouches comme Mongoose. Pour cet article, je vais rester avec celui de base pour éviter de complexifier le code avec les schemas Mongoose par exemple.

Creation de l’application

Pour l’exemple je vous proposer une page permettant de gérer (CRUD) des utilisateurs ayant un nom et un prénom. Cette section présente dans un premier temps le code de l’application NodeJS/Express puis les requêtes jQuery du front.
Vous pourrez trouver le code complet sur le repo github en fin d’article.

NodeJS app.js

Il est bon de savoir que nodejs ne prend pas nativement en compte les modifications des sources de l’application.
Soit vous relancez le serveur node à chaque fois.
Soit vous installez un utilitaire qui relance automatiquement le serveur quand une modification a lieu dans le répertoire source. Exemple : Nodemon

Initialisation

CREATE

READ

Les identifiants dans MongoDB – équivalent du ID autoincrément – sont des objets à part entière. Si vous passez une chaine de caractère, la requête échoue.
Vous avez probablement remarqué la ligne var ObjectID = require(‘mongodb’).ObjectID qui permet de manipuler les ObjectID.
Vous pouvez donc créer l’objet attendu pour avoir une requête opérationnel : new ObjectID(req.params.userId)

UPDATE

DELETE

Front jQuery

Rendu de la page CRUD

CREATE

READ

UPDATE

DELETE

Vous pourrez trouver l’intégralité du code de cet exemple sur mon repo Github : Repo GitHub.

Related Post

Logger des événements client avec JSNLog Continuons l'exploration des solutions de log et voyons comment logger des événements client dans une application web. Prenons une application web Ang...
Schéma de validation MongoDB Quand on utilise MongoDB, les collections peuvent facilement contenir des types de données différents pour le même champ. Comment assurer qu’un champ ...
Recherche facettée avec MongoDB La recherche facettée avec MongoDB  évolue avec la sortie de la version 3.4. Concrètement, cette recherche (faceted search) permet aux utilisateurs de...
Tests unitaires avec Jasmine pour AngularJS Lors des précédents articles, nous avons construits une application AngularJS qui effectue quelques calculs. Pour s’assurer que les fonctions en charg...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *