Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Théme de la semaine : Découvrir node.js

Node.js et MySQL ou MongoDB : Connectez la base de données

Temps de lecture estimé : 12 minutes
Accueil Javascript Node.js et MySQL ou MongoDB : Connectez la base de données

Lorsque l’on découvre le développement web, Node.js apparaît souvent comme cette technologie moderne, rapide et très utilisée dans le monde professionnel. Vous en avez peut-être entendu parler dans des projets en temps réel, des API, des applications mobiles ou même dans les outils que vous utilisez chaque jour. Pourtant, lorsqu’il s’agit de connecter Node.js à une base de données, beaucoup de débutants se retrouvent bloqués.

Est-ce qu’on utilise MySQL ? Ou plutôt MongoDB ? Pourquoi choisir l’un plutôt que l’autre ? Comment écrire des requêtes ? Faut-il installer quelque chose ? Et surtout, comment faire en sorte que tout cela fonctionne sans erreurs mystérieuses ?

  • Comprendre clairement comment Node.js interagit avec une base de données pour créer, lire, modifier et supprimer des informations.
  • Savoir quand choisir MySQL ou MongoDB en fonction du type de projet et de l’évolution prévue des données.
  • Être capable de mettre en place une structure de données cohérente et adaptée pour développer des applications fiables et évolutives.

L’objectif de ce chapitre est justement de vous guider pas à pas. Vous allez comprendre comment Node.js dialogue avec une base de données, comment configurer votre environnement, et comment manipuler des données concrètes. L’idée est de partir de zéro, sans prérequis techniques compliqués, ni vocabulaire trop savant. Nous allons prendre notre temps et expliquer chaque notion clairement, comme si nous étions côte à côte devant votre écran.

Nous irons dans l’ordre : d’abord comprendre ce qu’est Node.js, puis ce qu’est une base de données, pourquoi il en existe plusieurs types, comment se connecter à MySQL, puis à MongoDB, et comment manipuler vos données dans chaque cas. L’objectif n’est pas seulement que vous suiviez les étapes, mais que vous compreniez ce que vous faites. C’est cette compréhension qui fera de vous un développeur autonome.

Qu’est-ce que Node.js et pourquoi l’utiliser avec une base de données ?

Node.js n’est pas un langage de programmation. C’est un environnement d’exécution qui permet d’utiliser JavaScript côté serveur. Autrement dit, au lieu d’être limité au navigateur, JavaScript peut maintenant s’exécuter sur un serveur, répondre à des requêtes, gérer des utilisateurs, générer des pages ou traiter des données.

Pour les débutant : Comprendre et installer Node.js.

Pourquoi est-ce utile lorsqu’on manipule une base de données ?
Parce que les applications modernes ont presque toujours besoin d’enregistrer ou de récupérer des informations. Par exemple :

  • Un site de recettes stocke des ingrédients et des instructions.
  • Une boutique en ligne conserve la liste des produits, des clients et des commandes.
  • Une application de streaming garde en mémoire vos playlists, vos préférences et l’historique de vos écoutes.

Dans tous ces cas, l’application n’affiche pas simplement des pages statiques. Elle doit mémoriser et organiser l’information. C’est là qu’entre en scène la base de données.

Comprendre ce qu’est une base de données

Une base de données est un espace de stockage structuré. Mais il existe plusieurs formes de structure. Pour le dire simplement, il existe deux grandes familles :

Les bases de données relationnelles (comme MySQL)

Elles fonctionnent avec des tables. Chaque table ressemble à un tableau avec des colonnes et des lignes. C’est organisé, rigoureux et très adapté aux données qui doivent rester cohérentes.

Par exemple, une table « Clients » pourrait contenir les champs : nom, email, date d’inscription.

Les bases de données non-relationnelles (comme MongoDB)

Elles n’utilisent pas de tables mais des documents qui ressemblent à des objets JavaScript. C’est plus flexible, souvent plus simple à manipuler, mais l’organisation est moins stricte.

Un document « Client » pourrait ressembler à :

{
  nom: "Marie",
  email: "[email protected]",
  favoris: ["recette1", "recette2"]
}

Les deux approches sont valables. Le choix dépend souvent du type de projet.

  • MySQL est parfait pour les systèmes structurés (comptes utilisateurs, commandes, factures).
  • MongoDB est excellent pour les données évolutives, variables ou créatives (profils personnalisables, historiques, discussions).

Pour résumer simplement :

  • MySQL est comme un classeur administratif très bien rangé.
  • MongoDB est comme un carnet plein de notes mais où vous pouvez écrire librement.

Choisir entre une base de données SQL et NoSQL.

Installer Node.js pour pouvoir communiquer avec une base de données

Avant d’écrire la moindre ligne de code, nous devons nous assurer que Node.js est installé. Pour vérifier, ouvrez un terminal sur votre ordinateur :

node -v

S’il répond par un numéro de version, c’est bon signe. Sinon, téléchargez Node.js depuis le site officiel nodejs.org, puis relancez la commande.

Ensuite, nous allons créer un dossier pour notre projet :

mkdir cours-node-bdd
cd cours-node-bdd

Puis initialiser notre projet :

npm init -y

Cette commande crée un fichier package.json qui sert de carte d’identité au projet.

Nous sommes maintenant prêts à installer un connecteur pour la base de données, mais avant cela, voyons comment Node.js va dialoguer avec elle.

Comment Node.js communique réellement avec une base de données

Node.js, à lui seul, ne sait pas parler directement à MySQL ou MongoDB. Il a besoin de modules qui servent d’intermédiaires.

  • Pour MySQL, nous utiliserons un module souvent nommé mysql2.
  • Pour MongoDB, nous utiliserons le module officiel mongodb.

Ces modules sont comme des traducteurs : ils transforment les instructions que vous écrivez en commandes compréhensibles par la base de données.

La logique est la suivante :

Votre code JavaScript → Module → Base de données → Retour des données → Module → Votre application

Cette idée est fondamentale : vous n’interagissez jamais directement avec la base. Tout passe par des outils spécialisés.

Se connecter à une base de données MySQL avec Node.js

MySQL fait partie des bases de données relationnelles les plus utilisées au monde. On la retrouve derrière des boutiques en ligne, des forums, des blogs, des réseaux sociaux internes d’entreprise et bien d’autres types de services. Elle est appréciée pour sa stabilité, sa rapidité et sa manière d’organiser l’information.

Avant de pouvoir utiliser MySQL avec Node.js, il faut que MySQL soit installé sur votre ordinateur, ou accessible sur un serveur distant. Si ce n’est pas encore le cas, vous pouvez installer MySQL avec XAMPP, WAMP ou MAMP selon votre système d’exploitation. Ces outils regroupent souvent tout ce qu’il faut pour démarrer rapidement, notamment phpMyAdmin pour gérer la base via une interface graphique.

Une fois MySQL disponible, créons une base simple. L’idée ici n’est pas de construire un projet énorme, mais de comprendre le fonctionnement général.

Dans votre interface MySQL (phpMyAdmin ou terminal), créez une base nommée :

CREATE DATABASE test_node;

Ensuite, sélectionnez-la :

USE test_node;

Et créons une table pour stocker des utilisateurs :

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100)
);

Cette table contiendra trois colonnes : un identifiant unique, un nom et un email. À ce stade, nous avons la partie stockage. Passons maintenant à la connexion via Node.js.

Installer le module mysql2

Dans votre projet Node.js, installez le module mysql2 :

npm install mysql2

Ensuite, créez un fichier app.js et ouvrez-le dans votre éditeur de code.

Nous allons maintenant établir une connexion :

const mysql = require('mysql2');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '', 
  database: 'test_node'
});

connection.connect((err) => {
  if (err) {
    console.error('Erreur de connexion à MySQL :', err);
    return;
  }
  console.log('Connexion à MySQL réussie');
});

Ce code indique à Node.js où se trouve la base de données, quel utilisateur l’utilise et comment s’y connecter. Si tout se passe bien, vous verrez un message de confirmation dans le terminal.

Pour lancer le fichier :

node app.js

Si vous obtenez une erreur du type ECONNREFUSED, c’est souvent que MySQL n’est pas lancé ou que les identifiants sont mauvais. Prenez votre temps à ce stade. C’est souvent le premier mur que rencontrent les débutants, et c’est normal.

Apprenez à Maitriser NPM, le gestionnaire de paquets pour Node.js.

Insérer des données dans MySQL depuis Node.js

Maintenant que la connexion fonctionne, nous allons ajouter un utilisateur dans la table. Toujours dans app.js :

connection.query(
  'INSERT INTO users (name, email) VALUES (?, ?)',
  ['Alice', '[email protected]'],
  (err, results) => {
    if (err) {
      console.error('Erreur lors de l\'insertion :', err);
      return;
    }
    console.log('Utilisateur ajouté avec succès');
  }
);

Ici, nous utilisons des points d’interrogation qui seront remplacés par les valeurs fournies dans le tableau. C’est une bonne pratique pour éviter les injections SQL, c’est-à-dire les attaques où un utilisateur malintentionné essaierait d’envoyer du code au lieu d’une simple valeur.

Lire des données

Pour récupérer la liste des utilisateurs :

connection.query(
  'SELECT * FROM users',
  (err, results) => {
    if (err) {
      console.error('Erreur lors de la lecture :', err);
      return;
    }
    console.log(results);
  }
);

Si vous lancez ce programme après l’insertion, vous devriez voir un tableau contenant l’utilisateur Alice.

Mettre à jour des données

Modifions l’email de l’utilisateur Alice :

connection.query(
  'UPDATE users SET email = ? WHERE name = ?',
  ['[email protected]', 'Alice'],
  (err) => {
    if (err) {
      console.error('Erreur lors de la mise à jour :', err);
      return;
    }
    console.log('Utilisateur mis à jour');
  }
);

Supprimer des données

Et pour supprimer un utilisateur :

connection.query(
  'DELETE FROM users WHERE name = ?',
  ['Alice'],
  (err) => {
    if (err) {
      console.error('Erreur lors de la suppression :', err);
      return;
    }
    console.log('Utilisateur supprimé');
  }
);

Vous venez d’apprendre les quatre actions fondamentales d’une base de données : créer, lire, mettre à jour et supprimer. On appelle cela le modèle CRUD. Derrière presque toutes les interfaces web du monde, ces opérations se répètent encore et encore.

Lors de mon tout premier stage de développement, j’étais persuadé qu’il fallait absolument apprendre des centaines de requêtes SQL pour être un bon développeur. Jusqu’au jour où mon tuteur m’a expliqué que 80% du travail tournait autour du CRUD. Le reste venait ensuite, naturellement, en fonction des besoins. C’est un peu comme apprendre à cuisiner : si vous savez faire cuire une pâte, assaisonner et gérer le feu, vous êtes déjà sur la bonne voie. Tout le reste vient avec l’expérience.

Se connecter à MongoDB avec Node.js

Après avoir exploré MySQL, nous allons maintenant découvrir MongoDB, l’un des systèmes de base de données les plus populaires dans l’univers du JavaScript moderne. Là où MySQL structure ses données dans des tables rigides, MongoDB stocke les informations sous forme de documents, très proches de la manière dont JavaScript représente les objets.

Cela signifie que, lorsque vous récupérez des données depuis MongoDB, vous obtenez souvent quelque chose qui ressemble déjà à du JavaScript. C’est l’une des raisons pour lesquelles Node.js et MongoDB forment un duo très apprécié dans le développement web dit « moderne ».

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Comprendre la logique de MongoDB

Pour bien comprendre MongoDB, il faut changer légèrement de manière de penser. On ne parle pas de tables et de colonnes, mais de collections et de documents.

  • Une collection, c’est un regroupement de documents.
  • Un document, c’est un objet JSON (ou plutôt BSON, une version binaire pensée pour être efficace).

Par exemple, voici un document représentant un utilisateur :

{
  name: "Alice",
  email: "[email protected]",
  favoris: ["musique", "cinéma", "cuisine"]
}

Il n’y a pas de schéma imposé. Vous pourriez très bien ajouter un champ age uniquement à certains utilisateurs, et MongoDB ne vous reprochera rien. C’est cette souplesse qui séduit beaucoup de développeurs qui construisent des applications en évolution rapide.

Installation de MongoDB

Selon votre système, l’installation peut varier, mais la ressource la plus fiable reste le site officiel : https://www.mongodb.com/try/download/community

Vous pouvez également utiliser MongoDB Atlas, une version hébergée en ligne, gratuite, pratique et idéale si l’on ne souhaite pas installer de serveur local.

Dans ce guide, nous partirons du principe que MongoDB est installé en local.

Pour vérifier qu’il fonctionne :

mongo --version

Ensuite, lancez le serveur :

mongod

Puis ouvrez un second terminal :

mongo

Vous entrez ainsi dans le shell MongoDB.

Créons une base nommée test_node_mongo :

use test_node_mongo

Puis une collection users :

db.users.insertOne({ name: "Alice", email: "[email protected]" })

Nous avons maintenant une collection contenant un document. Passons à la partie Node.js.

Installer le module MongoDB pour Node.js

Dans votre projet, installez le module officiel :

npm install mongodb

Créez maintenant un fichier mongo.js (pour séparer les tests de MySQL, c’est plus clair).

Ajoutez le code suivant :

const { MongoClient } = require('mongodb');

const url = 'mongodb://127.0.0.1:27017';
const client = new MongoClient(url);

async function run() {
  try {
    await client.connect();
    console.log('Connexion à MongoDB réussie');

    const db = client.db('test_node_mongo');
    const users = db.collection('users');

    const result = await users.insertOne({
      name: 'Bob',
      email: '[email protected]'
    });

    console.log('Utilisateur inséré avec l\'ID :', result.insertedId);

  } catch (err) {
    console.error('Erreur MongoDB :', err);
  } finally {
    await client.close();
  }
}

run();

Lancez maintenant :

node mongo.js

Vous devriez voir une confirmation ainsi qu’un identifiant généré automatiquement.

Lire des données depuis MongoDB

Ajoutons la lecture :

const allUsers = await users.find({}).toArray();
console.log(allUsers);

Cette instruction récupère tous les documents présents dans la collection users.

Mettre à jour des données

Pour modifier l’email de Bob :

await users.updateOne(
  { name: 'Bob' },
  { $set: { email: '[email protected]' } }
);
console.log('Utilisateur mis à jour');

Remarquez ici l’utilisation de $set. MongoDB utilise des opérateurs spécifiques pour indiquer l’action souhaitée. Cette approche offre beaucoup de flexibilité.

Supprimer des données

Et pour supprimer l’utilisateur Bob :

await users.deleteOne({ name: 'Bob' });
console.log('Utilisateur supprimé');

Voilà : vous avez réalisé du CRUD, tout comme avec MySQL, mais avec une syntaxe et une philosophie différentes.

Comparer MySQL et MongoDB (simplement)

Pour bien ancrer l’idée, voici un résumé clair.

  • MySQL demande de réfléchir à la structure avant de stocker les données.
  • MongoDB permet d’insérer et de modifier les données selon l’évolution du projet.

MySQL convient très bien aux données liées entre elles, où les relations doivent rester précises. MongoDB est idéal quand le projet est amené à changer souvent, ou quand chaque utilisateur peut avoir des données très différentes.

Une comparaison imagée :

  • MySQL, c’est comme tenir un registre de bibliothèque parfaitement rangé par auteur, catégorie, année.
  • MongoDB, c’est comme tenir un carnet de notes où vous écrivez ce que vous voulez, quand vous voulez, sans contrainte.

Comment choisir entre MySQL et MongoDB selon votre projet

Maintenant que vous avez manipulé MySQL et MongoDB avec Node.js, une question importante se pose : lequel choisir pour votre projet ? Il n’existe pas de réponse universelle. La bonne décision dépend surtout de la nature des données, de l’évolution prévue du projet et de la manière dont les informations vont interagir entre elles.

Si vos données doivent suivre une structure rigide, que vous savez exactement quelles colonnes doivent exister, que les relations entre vos tables sont importantes et qu’il est essentiel de garantir l’intégrité des données, alors MySQL est un excellent choix. C’est typiquement le cas pour une boutique en ligne, où chaque commande doit être rattachée à un client, et chaque produit à une catégorie bien définie. La cohérence est primordiale.

À l’inverse, si votre projet est amené à évoluer souvent, que différents utilisateurs peuvent avoir des données de formes variées, ou que vous souhaitez stocker des informations complexes sans forcément savoir à l’avance comment elles vont évoluer, MongoDB se montre généralement plus confortable. Par exemple, si vous créez une application où les utilisateurs définissent eux-mêmes des champs personnalisés, un tableau de préférences, des historiques, ou des fiches évolutives, MongoDB évite de devoir constamment modifier la structure de la base.

Il faut également prendre en compte la façon dont votre équipe de développement aime travailler. Certains développeurs apprécient la rigueur des schémas relationnels. D’autres préfèrent la flexibilité des bases orientées documents. Ce point peut sembler anecdotique, mais il influence souvent la fluidité du travail.

Une autre situation se produit souvent dans le monde réel : il est tout à fait possible d’utiliser les deux bases dans un même projet. Une application peut très bien utiliser MySQL pour gérer les utilisateurs et leurs comptes, et MongoDB pour stocker des données plus libres, comme des messages ou des contenus personnalisables. Cela demande un peu plus d’organisation, mais cela reste une approche courante.

Ce qui compte, ce n’est pas de choisir le « meilleur » outil, mais celui qui correspond le mieux à la logique du projet que vous développez.

Structurer ses données : un point essentiel pour éviter la confusion

Même si MongoDB permet de stocker des données sans structure fixe, il ne faut pas tomber dans l’excès inverse de MySQL. La liberté est utile, mais elle demande une réflexion tout aussi importante.

Par exemple, si vous décidez de stocker des profils utilisateurs dans MongoDB, il est préférable de garder une base cohérente. Si certains documents contiennent un champ age sous forme de nombre, d’autres sous forme de texte et d’autres encore sans information, vous risquez rapidement de créer du désordre. Un projet mal structuré devient difficile à maintenir, et vous pourriez finir par écrire du code compliqué juste pour gérer des cas exceptionnels.

La meilleure approche consiste souvent à définir un schéma mental, même avec MongoDB. Cela signifie décider à l’avance de la forme générale des documents, même si vous vous laissez la possibilité d’ajouter des champs plus tard. Cela revient à dire que la liberté ne doit pas empêcher la clarté.

Pour MySQL, la structure est imposée dès la création des tables. Il faut définir les colonnes, les types de données et les relations. Cette contrainte peut sembler lourde au début, mais elle aide à maintenir une base propre et compréhensible. Dans des projets qui durent plusieurs années, cette rigueur est souvent un véritable atout.

Les erreurs courantes des débutants (et comment les éviter)

L’une des erreurs les plus fréquentes quand on débute, c’est de vouloir aller trop vite. Beaucoup de développeurs commencent à écrire du code avant d’avoir réfléchi à la manière dont les données doivent être organisées. Ils créent des tables ou des collections au hasard, ajoutent des champs en cours de route, et se retrouvent ensuite avec une base qu’il faut presque réécrire entièrement.

Une autre erreur consiste à multiplier les requêtes sans prendre le temps de comprendre ce qu’elles font exactement. Dans MySQL, une requête mal formulée peut modifier plus de lignes que prévu. Dans MongoDB, une mauvaise condition de mise à jour peut supprimer ou remplacer toute une structure. La prudence est toujours de mise.

Une bonne habitude consiste à tester souvent, mais sur de petites portions de données. Il est également conseillé de faire des sauvegardes (même de petites sauvegardes locales) avant de réaliser des opérations importantes.

Enfin, il ne faut pas hésiter à lire les messages d’erreur. Cela peut sembler évident, mais beaucoup de développeurs débutants passent plus de temps à relancer la même commande qu’à comprendre le problème. Un message d’erreur n’est jamais là par hasard. Il contient presque toujours une indication sur la cause du blocage.

Node.js, bases de données et l’évolution naturelle du développeur

Lorsque vous commencerez à créer vos propres projets, vous verrez que la manière dont vous structurez vos données influencera directement la qualité de votre code, la vitesse de votre application et même l’expérience des utilisateurs. Une base stable et bien pensée permet de construire des fonctionnalités plus rapidement, avec moins de bugs et une plus grande sérénité.

Ce qui est amusant, c’est que cette étape marque généralement un tournant dans l’apprentissage d’un développeur. Le jour où l’on comprend que l’application n’est pas seulement un ensemble de pages, mais un système vivant où les données circulent et interagissent, on commence réellement à penser comme un architecte. On voit l’ensemble, pas seulement le code.

Beaucoup de développeurs se souviennent du moment précis où ils ont ressenti cette compréhension. Cela ressemble un peu à la première fois où l’on comprend un langage étranger. Au début, tout semble compliqué, puis un jour, une phrase s’éclaire et le reste suit naturellement.


Apprendre à connecter Node.js à une base de données est une étape essentielle pour devenir un développeur web complet. Que vous choisissiez MySQL ou MongoDB, l’important est de comprendre la logique qui se cache derrière chaque action. Node.js sert d’intermédiaire entre l’utilisateur et l’information. Il reçoit des requêtes, traite les données, les enregistre, les renvoie et les manipule selon les besoins.

Si MySQL représente l’ordre, la cohérence et la structure rigoureuse, MongoDB incarne l’adaptabilité, la liberté et la rapidité d’évolution. Aucun des deux n’est supérieur à l’autre. Chacun répond à des besoins différents.

Ce qui compte vraiment, c’est votre capacité à raisonner sur les données, à structurer votre base avant d’écrire du code, et à adopter une démarche progressive, réfléchie et méthodique. À mesure que vous travaillerez sur vos projets, vous développerez votre propre sens de l’organisation et votre propre manière d’aborder les systèmes.

Vous disposez maintenant des bases nécessaires pour créer des API, des applications web, des tableaux de bord, des outils internes ou même des projets personnels plus ambitieux. Vous pouvez construire des interfaces qui affichent, enregistrent et manipulent des données de manière fluide. Et chaque étape que vous franchirez renforcera votre compréhension de l’architecture logicielle.

La suite dépend maintenant de votre curiosité et de votre envie de créer. Expérimentez, testez, modifiez, améliorez. C’est par la pratique que la compétence se construit réellement.