Accueil

Traduction

Tutoriel sur JS natif, Vue.js, jQuery.js & Node.js

Tutoriel JavaScript - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Node.js & MySQL

Pendant longtemps pour interroger dans le cadre d'une page web, une base de données il fallait produire un script PHP.
Le développeur web devait donc apprendre le HTML, le CSS, Le JavaScript mais aussi le PHP ...
Désormais grâce à Node.js on peut manipuler une base de données via JS et en dehors du navigateur.

Le SGBD MySQL

MySQL est un SGBD parmi d'autres.

Les différents SGBD

Il existe des SGBD (Système de Gestion de Bases de Données) de type SQL (Structured Query Langage) et d'autres NoSQL.
Le SGBD de type SQL le plus connu est MySQL. Il est de type SQL car les requêtes doivent être écrites avec ce langage de requête.

Dans un autre tuto de mon site vous trouverez quelques chapitres sur MySQL. J'y explique qu'une base de données MYSQL comprend 1 ou plusieurs tables ; que chaque table est structurée ; je précise les différents types de champs ; j'indique les différentes types de requêtes pour consulter et modifier les données de la base.
Didacticiel sur MYSQL

Dans la suite de ce chapitre je vais vous montrer comment manipuler une base de données MYSQL avec Node.js. Même si il est vrai que l'on associe souvent Node.js avec le SGBD orienté document : mongoDB.

Installations prélables

Il faut éventuellement installer le SGBD MySQL.
Si sur votre PC vous avez déjà installé WAMP (logiciel de serveur web sous Windows), le SGBD MySQL est déjà installé puisqu'il fait partie du pack. Sinon télécharger SGBD mysql.

Il faut ensuite installer le pilote ("driver") "mysql". Donc il suffit de taper à partir de la console Windows : npm install mysql

Créer et manipuler une base MySQL

Pour le SGBD MySQL installé sur mon PC, le nom utilisateur est "root" et il n'y a pas de mot de passe.
Il existe déjà une base appelée "mabase".

Créer une base

Le programme

Ce script se connecte à MySQL de mon PC et y crée une nouvelle base nommée "mabase2".

Le rendu

Si cet outil est installé, démarrez WAMP, lancez l'utilitaire phpMyAdmin et vérifiez si la nouvelle base a bien été créée.

Création d'une table dans la base

La nouvelle base doit comporter au moins une table.

Le programme

Ce script se connecte à la nouvelle base et y crée un table nommée "adherents2".
La structure de cette table n'est pas un modèle à suivre. Il n'y a pas de clé primaire ... donc une recherche indexée est impossible.

Le rendu

Basculez sur l'utilaire phpMyAdmin et vérifiez si la table a bien été créée.

Remplir la table

La nouvelle table est pour le moment vide de tout enregistrement.
Dans le cadre d'un script il faut une requête SQL de type INSERT pour la remplir.

Le script

Ce programma ajoute 5 lignes (enregistrements) à la table "adherents2".
Les champs "email" ne sont pas renseignés mais il n'y aura pas d'erreur d'exécution puisque NULL est autorisé pour toutes les colonnes de cette table.

Le rendu

Encore une fois utilisez l'utilitaire phpMyAdmin pour vérifier de la bonne exécution du script.

Remplir la table - version améliorée

Dans la pratique c'est l'utlisateur qui précise via des saisies le contenu des différents champs pour l'enregistrement ajouté.
Le code :

Il faut importer le module "prompt-sync" pour effectuer des saisies au clavier.
Notez la syntaxe particulière de la requête SQL INSERT et de l'instruction d'exécution de cette requête.

Remplir la table via un formulaire de saisie

L'idéal pour un utilisateur est de renseigner un formulaire donc avec des contrôles de saisie.
Si vous avez lu mon tutoriel sur PHP vous savez qu'il est relativement simple de créer une page d'extension .php qui ajoute une ligne après saisies des données via un formulaire HTML.
Code HTML & PHP pour ajouter une ligne à une table MySQL
Malheureusement c'est beaucoup moins simple en Node.js qu'en PHP.
La solution dans l'environnement Node.js fait appel à des notions qui n'ont pas été encore évoquées ...

Afficher le résultat d'une requête sélection

Afficher le résultat dans la console Node

Le code est relativement simple.

Le script

Il faut se connecter à la base "mabase2" puis exécuter une requête de type SELECT.
le résultat de cette requête est dans "retour_sql" : un tableau d'objets.
Il suffit ensuite de parcourir ce tableau avec une boucle de type FOR ... OF ...

Le rendu

L'affichage dans la console Node du contenu de cette table est tristounet.
Rassurez-vous, il s'agit d'un affichage provisoire.

A propos des requêtes SELECT ...

Une requête SQL de type SELECT peut être très puissante mais alors complexe : tri / filtrage / étendue / extraction de données appartenant à plusieurs tables reliées entre elles par un champ de jointure.
Si vous voulez réviser le langage SQL et plus précisèment les requêtes de sélection : les requêtes SELECT du langage SQL.

Afficher le résultat d'une requête SELECT sous forme d'une page web

Il est souhaitable que le résultat d'une requête sélection s'affiche dans le navigateur.

Le script

Le code HTML est généré dans la variable nommée HTML.
Le contenu de cette variable est adressé au navigateur via le serveur web : result.writeHead(200, {'Content-Type': 'text/html'}); result.end(HTML);

Le rendu dans le navigateur

Le contenu de la table s'affiche désormais non seulement dans la console mais aussi sous forme d'une jolie page web dans le navigateur.
Reconnnaissez que l'affichage de la requête SELECT dans le navigateur est fort satisfaisant.