Requètes MySQL en Node.js

Cette page explique comment exécuter des requêtes SQL pour lire/écrire des données dans une base de données MySQL. Dans ce qui suit, nous supposons qu'un serveur MySQL est accessible et que les informations d'identification sont username/password.

Vous pouvez vérifier que votre serveur MySQL est correctement installé et configuré en utilisant l'interface CLI mysql :

mysql --host=127.0.0.1 --port=6033 -u username -p

Ne continuez pas tant que vous n'êtes pas en mesure de vous connecter à la base de données. Sinon, le code Node.js ne fonctionnera jamais.

Ce qui suit a été testé avec ces versions :

Installer mysql2

Tout d'abord, nous avons besoin d'un client MySQL pour Node.js. Il existe deux paquets npm nommés mysql et mysql2. mysql2 est plus rapide et sécurisé, donc installons celui-ci :

npm install mysql2

Première requête

Créez un fichier nommé app.js pour votre projet.

Importez d'abord le client MySQL :

// Import MySQL client
const mysql = require('mysql2');

Maintenant, connectons nous à la base de données (c'est ici que les informations d'identification sont importantes). Créons un objet dbConfig avec la configuration de la connexion.

const dbConfig = {
    host: "127.0.0.1",
    port: 6033,
    user: 'username',  
    database: 'esp32',
    password: 'password'
}

Créons maintenant une nouvelle connexion à la base de données :

// create the connection to database
const connection = mysql.createConnection(dbConfig);

Voici le code de la première requête :

// Simple query
connection.query(
    'SELECT * FROM `table`',
    function(err, results, fields) {
        if (err) console.log (err);
        console.log(results);       
    }
  );

Le code ci-dessus devrait retourner un objet contenant le contenu entier de table :

[
  {
    id: 1,
    name: 'Jim Morrison',
    age: 28,
    timestamp: 2023-01-12T08:06:25.000Z
  },
  {
    id: 2,
    name: 'Paul Smith',
    age: 32,
    timestamp: 2023-01-12T08:07:40.000Z
  }
]

Pour éviter les injections SQL, je ne recommande pas d'utiliser connection.query(). Préférez les instructions préparées.

Requêtes paramètrés

les requêtes paramétrées envoient la requête et les paramètres séparément. Si vous ne comprenez pas pourquoi c'est important importants, consultez cette page sur les injections SQL. Pour exécuter une requête paramètrée, utilisez connection.execute() au lieu de connection.query(). Le deuxième argument de la fonction est un tableau contenant les paramètres :

connection.execute(
    'INSERT INTO `data` (`firstname`, `age`) VALUES (?,?);',    
    ['Jim Morrison', 28],
    (err, results, fields) => {
        // Check for error
        if (err) console.log (err);
        console.log(results); 
    }
);

Fermer la connexion

Si vous exécutez les codes ci-dessus, vous avez probablement remarqué que l'application ne se termine jamais. Ceci est dû au fait que la connexion à la base de données est asynchrone et reste ouverte.

Pour fermer la connexion MySQL, utilisez :

connection.end();

Téléchargement

Vous pouvez télécharger le code source Node.js ici :

mysql2-server.js

Voir aussi


Dernière mise à jour : 12/01/2023