DEV Community

Cover image for NodeJS + Express partie 6 : Base de données MongoDB
 Eric Le Codeur
Eric Le Codeur

Posted on

NodeJS + Express partie 6 : Base de données MongoDB

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.
Image description

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
Image description

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"

Image description

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
Enter fullscreen mode Exit fullscreen mode

Ensuite, installation du package ExpressJS et nodemon

$ npm install express
$ npm nodemon
Enter fullscreen mode Exit fullscreen mode

À 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