Voici une série d'articles qui vous permettra créer des applications backend avec NodeJS + Express.
Cette série est la suite de ma série sur les bases de NodeJS. Si vous n'avez pas les connaissances de bases en NodeJS lisez cette série d'abord : Introduction à NodeJS
Node.js est aujourd'hui un incontournable, il est donc essentiel pour un développeur de le maitriser.
Je vais donc publier un nouvel article environ au deux jours et petit à petit vous apprendrez tout ce qu'il y a à savoir sur Node.js + Espress
Pour ne rien manquer suivez moi sur twitter : https://twitter.com/EricLeCodeur
Base de données MongoDB
Dans cette section nous allons apprendre comment manipuler une base de données MongoDB à partir de notre API.
Vous savez sans doute qu'il existe plusieurs type de base de données comme les base de données SQL et les base de donnée NoSQL.
Le but de cette article n'est pas d'expliquer en détail qu'est-ce qu'une base de données et comment elle fonctionne à l'interne. Donc un minimum de connaissance en base de données est requis.
Aujourd'hui, nous allons utiliser MongoDB qui est une base de données NoSQL
Les base de données NoSQL contiennent des collections qui eux contiennent des documents. Par exemple une base pourrait avoir la collection User et plusieurs documents qui contiendrait chacun les informations d'un user comme par exemple : no, nom, prénom, etc.
Si vous avez de l'expérience avec des bases de données SQL, on pourrait simplifier le tout en disant que les collections sont les tables et les documents sont les lignes et colonnes de la tables.
Installation MongoDB
MongoDB peut être installé sur votre machine local ou être utilisé en version cloud database.
Dans ce tutoriel nous allons créer une base de donnée MongoDB à partir de leur cloud. (https://www.mongodb.com/atlas)
Le service est gratuit et ne nécessite pas de carte de crédit.
Pour avoir accès au cloud MongoDB et ensuite pouvoir créer votre propre base de données, rendez-vous au https://www.mongodb.com/atlas et cliqué sur le bouton "Try Free".
Choisir le service Atlas, remplir le questionnaire et cliquer "Get started free"
Une fois votre compte créé, rendez-vous sur le panneau de configuration, vous devriez voir quelque chose comme cela.

Cliquez sur "Build a Database", ensuite choisir l'option "Free Shared" et cliquer sur "Create". Ensuite, conserver les options par défaut sauf la dernière option qui est "Cluster Name" et changer le nom pour "NodeExpress". Enfin cliquer sur "Create Cluster"
Créer une base de données
Votre compte MongoDB est créer et activé nous allons maintenant créer notre base de donnée et notre première collection
Votre cluster étant maintenant créer, vous devriez voir quelque chose comme cela

Pour créer une base de données et une collection. Cliquer sur "Browse Collection", ensuite sur "Add My Own Data". Enfin saisir le nom de la base de données et le nom de la collection et cliquer sur "Create"
Prêt à coder
Pour résumer, nous avons créé un compte cloud MongoDB, créer un free Cluster et créer notre première base de donnée "Demo" et enfin notre première collection "Products"
Maintenant nous sommes prêt pour coder notre API et manipuler notre base de données
Création du projet NodeJS
Nous allons maintenant créer notre projet NodeJS, je vais donner ici le code de départ (qui provient des articles précédant).
Créer un dossier
$ mkdir demo-express-mongo
$ cd demo-express-mongo
Ensuite, installation du package ExpressJS et nodemon
$ npm install express
$ npm nodemon
À noter que comme spécifié dans la section sur NodeJS, le package nodemon permet de recharger le serveur à chaque modification de notre code.
Afin de ne pas répéter les concepts que nous avons couvert dans les articles précédent, nous allons commencer avec le même code que nous avions à la fin du dernier article
Créer un dossier controllers et créer un fichier products.js avec le code suivant
const products = require('../data.js')
const getProducts = ((req, res) => {
res.json(products)
})
const getProduct = ((req, res) => {
const id = Number(req.params.productID)
const product = products.find(product => product.id === id)
if (!product) {
return res.status(404).send('Product not found')
}
res.json(product)
})
const createProduct = ((req, res) => {
const newProduct = {
id: products.length + 1,
name: req.body.name,
price: req.body.price
}
products.push(newProduct)
res.status(201).json(newProduct)
})
const updateProduct = ((req, res) => {
const id
