oujood.com

Connecter ExpressJS à une Base de Données - Tutoriel Détaillé avec MongoDB pour Débutants

Apprenez à connecter ExpressJS à une base de données MongoDB dans ce tutoriel pas à pas pour débutants complets. Exemples clairs et exécutables inclus.
Dans ce tutoriel, nous allons apprendre à connecter une application ExpressJS à une base de données, en utilisant MongoDB comme exemple. Ce guide est conçu pour les débutants: nous irons lentement, étape par étape, avec des instructions précises pour que vous puissiez tout exécuter vous-même, même si vous n’avez jamais touché à une base de données auparavant.

chercher |

Introduction : Qu’est-ce qu’une Base de Données et Pourquoi l’Utiliser avec ExpressJS ?

Une base de données est comme un classeur numérique où vous pouvez stocker des informations (par exemple, des noms, des emails) pour les réutiliser plus tard. Avec ExpressJS, un outil pour créer des serveurs web, vous pouvez sauvegarder les données des utilisateurs au lieu de les perdre à chaque redémarrage du serveur. Nous utiliserons MongoDB, une base de données simple et populaire, pour stocker des noms d’utilisateurs dans cet exemple.

Étape 1 : Préparer Votre Environnement

Avant de commencer, assurons-nous que vous avez tout ce qu’il faut. Suivez ces étapes une par une :

  • Node.js installé : Si vous avez suivi le tutoriel précédent, vous l’avez déjà. Sinon, téléchargez-le sur nodejs.org et vérifiez avec node -v dans un terminal.
  • Créez un dossier projet : Faites un dossier nommé "base-de-donnees-express" sur votre ordinateur.
  • Initialisez le projet : Dans le terminal, allez dans ce dossier avec la commande : cd chemin/vers/base-de-donnees-express, puis tapez npm init -y. Cela crée un fichier package.json.
  • Installez ExpressJS et Mongoose : Tapez npm install express mongoose. Express est pour le serveur, et Mongoose est un outil qui simplifie l’utilisation de MongoDB.
  • Installez MongoDB : Téléchargez MongoDB Community Server sur mongodb.com, installez-le, et lancez-le avec en tapant la commande: mongod dans un autre terminal (laissez-le tourner).

Étape 2 : Connecter ExpressJS à MongoDB

Nous allons créer un serveur ExpressJS et le connecter à MongoDB pour qu’il puisse y stocker des données.

Exemple de Code : Connexion à MongoDB

Créez un fichier nommé index.js dans votre dossier "base-de-donnees-express" et ajoutez ce code. Il connecte le serveur à MongoDB.

📋 Copier le code

var express = require('express');
var mongoose = require('mongoose');
var app = express();

// Connexion à MongoDB
mongoose.connect('mongodb://localhost:27017/mon_db', { 
    useNewUrlParser: true, 
    useUnifiedTopology: true 
})
.then(() => console.log("Connecté à MongoDB !"))
.catch(err => console.log("Erreur de connexion : ", err));

app.listen(3000, function() {
    console.log("Serveur démarré sur http://localhost:3000");
});
    

Explication Détaillée du Code

Voici chaque ligne expliquée très simplement pour les débutants :

  • var express = require('express'); : On importe ExpressJS pour créer notre serveur web.
  • var mongoose = require('mongoose'); : On importe Mongoose, qui nous aide à comuniquer avec MongoDB facilement.
  • var app = express(); : On crée une application Express, comme une boîte pour notre serveur.
  • mongoose.connect('mongodb://localhost:27017/mon_db', { ... }); : On demande à Mongoose de se connecter à MongoDB. Voici les parties :
    • 'mongodb://localhost:27017/mon_db' : L’adresse de MongoDB. "localhost" signifie votre ordinateur, "27017" est le port par défaut, et "mon_db" est le nom de la base de données (elle sera créée automatiquement si elle n’existe pas).
    • { useNewUrlParser: true, useUnifiedTopology: true } : Options pour éviter des messages d’erreur dans les nouvelles versions de Mongoose.
  • .then(() => console.log("Connecté à MongoDB !")) : Si la connexion réussit, on affiche un message dans la console.
  • .catch(err => console.log("Erreur : ", err)); : Si ça échoue, on affiche l’erreur pour savoir ce qui ne va pas.
  • app.listen(3000, ...); : On démarre le serveur sur le port 3000. Vous verrez les messages dans le terminal.

Pour exécuter : Assurez-vous que MongoDB tourne (avec la commande : mongod), puis tapez node index.js dans le terminal. Si vous voyez "Connecté à MongoDB !", tout fonctionne !

Étape 3 : Stocker des Données dans MongoDB

Maintenant, créons une petite application pour enregistrer des noms d’utilisateurs dans la base de données.

Exemple de Code : Enregistrer un Utilisateur

Mettez à jour index.js avec ce code. Il ajoute un modèle pour les utilisateurs et une route pour les enregistrer.

📋 Copier le code

var express = require('express');
var mongoose = require('mongoose');
var app = express();

// Connexion à MongoDB
mongoose.connect('mongodb://localhost:27017/mon_db', { 
    useNewUrlParser: true, 
    useUnifiedTopology: true 
})
.then(() => console.log("Connecté à MongoDB !"))
.catch(err => console.log("Erreur de connexion : ", err));

// Définir un modèle pour les utilisateurs
var utilisateurSchema = new mongoose.Schema({
    nom: String
});
var Utilisateur = mongoose.model('Utilisateur', utilisateurSchema);

// Route pour afficher un formulaire
app.get('/', function(req, res) {
    res.send(`
        <html>
            <body>
                <h1>Ajouter un utilisateur</h1>
                <form method="POST" action="/ajouter">
                    <label>Nom : </label>
                    <input type="text" name="nom">
                    <button type="submit">Enregistrer</button>
                </form>
            </body>
        </html>
    `);
});

// Route pour enregistrer un utilisateur
app.post('/ajouter', function(req, res) {
    var nouvelUtilisateur = new Utilisateur({ nom: req.body.nom });
    nouvelUtilisateur.save()
        .then(() => res.send("<html><body><h1>Utilisateur enregistré !</h1></body></html>"))
        .catch(err => res.send("Erreur : " + err));
});

// Middleware pour lire les données POST
app.use(express.urlencoded({ extended: false }));

app.listen(3000, function() {
    console.log("Serveur démarré sur http://localhost:3000");
});
    

Explication Détaillée du Code

Voici chaque nouvelle partie expliquée :

  • var utilisateurSchema = new mongoose.Schema({ nom: String }); : On crée un "plan" (schéma) pour nos utilisateurs. Ici, chaque utilisateur aura un champ "nom" qui contient du texte.
  • var Utilisateur = mongoose.model('Utilisateur', utilisateurSchema); : On transforme ce plan en un "modèle" appelé "Utilisateur". C’est comme une classe qu’on utilisera pour créer des utilisateurs dans MongoDB.
  • app.use(express.urlencoded({ extended: false })); : On ajoute un outil intégré à Express pour lire les données envoyées par le formulaire (comme dans le tutoriel précédent, mais sans body-parser cette fois).
  • app.get('/', ...); : Cette route affiche un formulaire où l’utilisateur peut entrer son nom.
  • app.post('/ajouter', function(req, res) { ... }); : Quand le formulaire est envoyé à "/ajouter", on fait quelque chose avec les données.
  • var nouvelUtilisateur = new Utilisateur({ nom: req.body.nom }); : On crée un nouvel utilisateur avec le nom tapé dans le formulaire. req.body.nom récupère ce nom.
  • nouvelUtilisateur.save() : On enregistre cet utilisateur dans MongoDB.
  • .then(() => res.send(...)) : Si ça marche, on affiche un message de succès.
  • .catch(err => res.send(...)); : Si ça échoue, on affiche l’erreur.

Pour exécuter : Sauvegardez index.js, assurez-vous que MongoDB tourne, puis tapez node index.js. Allez à http://localhost:3000, entrez un nom (ex. : "Jean"), et cliquez sur "Enregistrer". Vous verrez "Utilisateur enregistré !".

Étape 4 : Gérer les Utilisateurs - Afficher, Supprimer et Mettre à Jour

Maintenant que nous savons enregistrer des utilisateurs dans MongoDB avec ExpressJS, apprenons à afficher la liste des utilisateurs, à en supprimer un, et à en mettre à jour un autre. Ces opérations sont appelées "CRUD" (Create, Read, Update, Delete). Nous avons déjà vu "Create" (créer) à l’étape précédente, alors concentrons-nous sur "Read" (lire), "Delete" (supprimer), et "Update" (mettre à jour). Suivez ces étapes lentement pour tout comprendre.

Exemple de Code : Afficher, Supprimer et Mettre à Jour les Utilisateurs

Mettez à jour votre fichier index.js avec ce code. Il ajoute des routes pour afficher tous les utilisateurs, en supprimer un, et en modifier un. Assurez-vous d’avoir suivi les étapes précédentes (connexion à MongoDB et modèle Utilisateur) avant d’ajouter ceci.

📋 Copier le code

var express = require('express');
var mongoose = require('mongoose');
var app = express();

// Connexion à MongoDB
mongoose.connect('mongodb://localhost:27017/monpremierdb', { 
    useNewUrlParser: true, 
    useUnifiedTopology: true 
})
.then(() => console.log("Connecté à MongoDB !"))
.catch(err => console.log("Erreur de connexion : ", err));

// Modèle Utilisateur
var utilisateurSchema = new mongoose.Schema({
    nom: String
});
var Utilisateur = mongoose.model('Utilisateur', utilisateurSchema);

// Middleware pour lire les données POST
app.use(express.urlencoded({ extended: false }));

// Route pour afficher le formulaire
app.get('/', function(req, res) {
    res.send(`
        <html>
            <body>
                <h1>Ajouter un utilisateur</h1>
                <form method="POST" action="/ajouter">
                    <label>Nom : </label>
                    <input type="text" name="nom">
                    <button type="submit">Enregistrer</button>
                </form>
                <h2><a href="/liste" title="Voir la liste des utilisateurs">Voir la liste des utilisateurs</a></h2>
            </body>
        </html>
    `);
});

// Route pour enregistrer un utilisateur
app.post('/ajouter', function(req, res) {
    var nouvelUtilisateur = new Utilisateur({ nom: req.body.nom });
    nouvelUtilisateur.save()
        .then(() => res.send("<html><body><h1>Utilisateur enregistré ! <a href='/'>Retour</a></h1></body></html>"))
        .catch(err => res.send("Erreur : " + err));
});

// Route pour afficher la liste des utilisateurs
app.get('/liste', function(req, res) {
    Utilisateur.find()
        .then(utilisateurs => {
            var html = "<html><body><h1>Liste des utilisateurs</h1><ul>";
            utilisateurs.forEach(user => {
                html += `<li>${user.nom} - <a href="/supprimer/${user._id}" title="Supprimer ${user.nom}">Supprimer</a> - <a href="/modifier/${user._id}" title="Modifier ${user.nom}">Modifier</a></li>`;
            });
            html += "</ul><a href='/'>Retour</a></body></html>";
            res.send(html);
        })
        .catch(err => res.send("Erreur : " + err));
});

// Route pour supprimer un utilisateur
app.get('/supprimer/:id', function(req, res) {
    Utilisateur.findByIdAndDelete(req.params.id)
        .then(() => res.send("<html><body><h1>Utilisateur supprimé ! <a href='/liste'>Retour à la liste</a></h1></body></html>"))
        .catch(err => res.send("Erreur : " + err));
});

// Route pour afficher le formulaire de modification
app.get('/modifier/:id', function(req, res) {
    Utilisateur.findById(req.params.id)
        .then(user => {
            res.send(`
                <html>
                    <body>
                        <h1>Modifier ${user.nom}</h1>
                        <form method="POST" action="/modifier/${user._id}">
                            <label>Nouveau nom : </label>
                            <input type="text" name="nom" value="${user.nom}">
                            <button type="submit">Mettre à jour</button>
                        </form>
                        <a href="/liste">Retour à la liste</a>
                    </body>
                </html>
            `);
        })
        .catch(err => res.send("Erreur : " + err));
});

// Route pour mettre à jour un utilisateur
app.post('/modifier/:id', function(req, res) {
    Utilisateur.findByIdAndUpdate(req.params.id, { nom: req.body.nom })
        .then(() => res.send("<html><body><h1>Utilisateur mis à jour ! <a href='/liste'>Retour à la liste</a></h1></body></html>"))
        .catch(err => res.send("Erreur : " + err));
});

app.listen(3000, function() {
    console.log("Serveur démarré sur http://localhost:3000");
});

Explication Détaillée du Code

Voici chaque nouvelle partie expliquée très clairement pour les débutants:

  • app.get('/liste', function(req, res) { ... }); : Cette route affiche tous les utilisateurs enregistrés dans MongoDB.
    • Utilisateur.find() : Une commande Mongoose qui demande à MongoDB de donner tous les utilisateurs. Pas d’arguments signifie "tous".
    • .then(utilisateurs => { ... }) : Si MongoDB répond, on reçoit une liste d’utilisateurs (comme un tableau).
    • utilisateurs.forEach(user => { ... }); : On parcourt chaque utilisateur pour créer une ligne dans une liste HTML. user._id est une clé unique générée par MongoDB pour chaque utilisateur.
    • html += `${user.nom} - ...` : On ajoute le nom et des liens pour supprimer ou modifier cet utilisateur.
    • res.send(html); : On envoie la page avec la liste au navigateur.
  • app.get('/supprimer/:id', function(req, res) { ... }); : Cette route supprime un utilisateur.
    • req.params.id : Récupère l’ID de l’utilisateur depuis l’URL (ex. : "/supprimer/123" donne "123").
    • Utilisateur.findByIdAndDelete(req.params.id) : Cherche l’utilisateur par son ID et le supprime de MongoDB.
    • .then(() => res.send(...)) : Si ça marche, on affiche un message de confirmation avec un lien pour revenir.
  • app.get('/modifier/:id', function(req, res) { ... }); : Cette route affiche un formulaire pour modifier un utilisateur.
    • Utilisateur.findById(req.params.id) : Cherche l’utilisateur par son ID.
    • .then(user => { ... }) : On reçoit les détails de l’utilisateur (comme son nom).
    • <input value="${user.nom}"> : Le formulaire montre le nom actuel pour qu’on puisse le changer.
  • app.post('/modifier/:id', function(req, res) { ... }); : Cette route met à jour l’utilisateur.
    • Utilisateur.findByIdAndUpdate(req.params.id, { nom: req.body.nom }) : Cherche l’utilisateur et remplace son nom par le nouveau nom envoyé par le formulaire.
    • .then(() => res.send(...)) : Si ça réussit, on confirme la mise à jour.

Pour exécuter : Sauvegardez index.js, assurez-vous que MongoDB est lancé (mongod), puis tapez node index.js dans le terminal. Allez à http://localhost:3000, ajoutez quelques noms (ex. : "Marie", "Paul"), puis cliquez sur "Voir la liste des utilisateurs". Essayez de supprimer ou modifier un utilisateur pour voir ça marcher !

Conclusion

Bravo ! Vous avez connecté ExpressJS à MongoDB et enregistré des données. Vous pouvez vérifier vos utilisateurs dans MongoDB avec un outil comme MongoDB Compass. Explorez notre prochain tutoriel sur Utiliser les Cookies avec ExpressJS ou consultez la documentation Mongoose.



Voir aussi nos tutoriel :

Faire une barre d’icones

QU’est ce que Font awesome ? et comment créer une barre d’icones en utilisant font-awesome.

Balise noscript

Définit un autre contenu pour les utilisateurs qui ne supportent pas les scripts côté client

La pagination avec bootstrap

Comment créer une pagination avec bootstrap.