2020-09-27 09:11:13 +02:00
2020-09-27 09:11:13 +02:00
2020-12-28 15:24:32 +01:00
2020-09-27 09:11:13 +02:00

Présentation

Ce projet sert de socle technique facilitant le développement de "back-end" d'applications en NodeJS, communiquant avec une base MongoDB.

Base de données

Il s'agit d'une base MongoDB.

On peut simplement créer/démarrer la base en utilisant le fichier docker-compose.yml :

$ cd <PROJECT_PATH>/docker
$ docker-compose up -d

Par défaut, la base utilise le port 27017.

Application Back-end

Notions théoriques

Route

Une route correspond à l'URI associée à un service exposé.

Typiquement, une route est composée d'un chemin, par exemple /users, et d'un verbe http, par exemple POST.

Controleurs

Un controlleur est un composant qui expose des services via la déclaration de routes.

Controlleurs

Création

Pour créer un controlleur, il suffit de copier-coller le fichier src/js/controller/templateCtrl.js et de renommer la copie, de préférence, de cette façon <entity>Ctrl.js.

Par exemple, si on veut exposer un service sur des entités représentant des voitures, on appelerait ce controlleur carCtrl.js.

Déclaration

Une fois le controlleur créé, les routes qu'il contient ne sont pas effectives. En effet, le controlleur est créé mais n'est pas lié à l'application Express.

Pour que notre nouveau controlleur soit utilisée par notre application, il va falloir le déclarer en modifiant le fichier src/js/app.js.

Dans un premier temps, il va falloir importer notre controlleur, en utilisant l'instruction suivante, mais de préférence en haut du fichier src/js/app.js :

const carController = require('./controller/carCtrl');

Puis, dans un second temps, il va falloir déclarer le controlleur dans l'application Express, en utilisant la méthode use comme ce qui suit :

app.use('/cars', carController);

Voilà, votre controlleur est effectif, les services qu'il expose sont désormais accéssibles.

Communication avec la base de données

Notions théoriques

MongoDB est un gestionnaire de base de données NoSQL, et orienté Documents.

Un document est la représentation JSON d'entités.

Les documents sont stockés dans des collections, ce sont des sortes de "dépôts". Par convention, on stocke les mêmes types d'entités dans une seule et même collection.

Imaginons que notre application permette de gérer des voitures et des clients, alors on créera deux collections dans notre base de données : cars et customers.

Si notre application doit gérer plusieurs types de véhicules, des voitures essences, diesel, électriques, hybrides etc., alors on doit se demander si toutes ces entités doivent être stockées dans la même collection cars, ou si c'est plus pertinent d'en créer d'autres.

Si la différence entre les différentes catégories de véhicules n'est pas très grande et peu importante dans la logique métier de l'application, alors il vaut mieux stocker toutes les voitures dans la même collection.

Manipulation d'une collection

Il existe une classe permettant de créer/modifier/supprimer/récupérer des entités dans la base Mongo.

Il s'agit de la classe Repository, définie dans le fichier src/js/repository/repository.js.

Si on veut exposer des services pour manipuler des voitures, qui sont stockées dans la collection cars, il suffit alors de créer un objet Repository, en passant en paramètre du constructeur de cette classe, le nom de la collection :

// En haut du fichier :
const Repository = require('../repository/repository');
...
const carRepository = new Repository('cars');

Ensuite, il suffira d'utiliser les méthodes suivantes en fonction de l'implémentation souaitée des services qu'on veut exposer : find, insert, update et delete.

Description
Prototype project to test ExpressJS with MongoDB.
Readme 246 KiB
Languages
JavaScript 100%