fonctionnement entre l'application et la DB - falcoda/Projet-DevWeb-III GitHub Wiki

Fonctionnement de la DB

Afin d'utiliser notre base de donnée avec le serveur Node Js nous utilisons des requètes du modules "my SQL" Voici un exemple concret afin de comprendre au mieux le fonctionnement des interractions entre la base de donnée et le site web.

Partie web

Nous retrouvons une interface comprenant différents champs. Ceux-ci permettent de récupèrer les valeurs entrées dans le formulaire via l'attribut 'value'.

formulaire contact

Lorsque l'utilisateur envoi le formulaire via le bouton 'envoyer', celui-ci est transmis au serveur node js via une requète XHR.

Voici la structure de nos différentes requètes (ici il s'agit de la requète permettant d'envoyer le formulaire de contact)

let xhr = new XMLHttpRequest();




xhr.open("POST", "/mail");
xhr.setRequestHeader("content-type", "application/json");
xhr.onload = function () {
	.
	.
	.
	}
};
xhr.send(JSON.stringify(data));

La variable data contient un objets contenant les informations rentrées par l'utilisateurs

   {nom: "Francois", prenom: "charlier", mail: "[email protected]", commentaire: "voici un commentaire"}

Partie serveur

La requète envoyée est reçue par le serveur via l'url /contact . Nous traitons ensuite les données. Afin d'enregistrer celle-ci dans la base de donnée, nous utilisons les commandes du module "mySQL".

Voici le code associé a la connexion de la base de donnée. Elle est effectuée une seule fois lors du démarrage du serveur.

   let con = mysql.createConnection({
	host: "localhost",
	user: "user",
	password: "pswd",
	database: "falcohm"
});

Voici le code associé a l'ajout du commentaire dans la base de donnée

con.connect(function (err) {
if (err) throw err;
	con.query("INSERT INTO messages (identite, mail, message) VALUES (?, ?, ?)", [request.body.nom + " " + request.body.prenom, request.body.mail, request.body.commentaire], function (err, result) {
	});
});
  • let con = mysql.createConnection : Objet contenant les données de la base de donnée, tel que l'adresse du serveur de bases de données, les identifiants de connexions ainsi que le nom de la base de donnée.
  • con.connect() : permet d'initialiser la connexion à la base de donnée
  • con.query() : permet d'effectuer une requète sql à la base de donnée à la quelle on est connecté

Dans les cas ou nous avons besoin d'un retour d'information d ela base de donnée (tel que des sélects), le serveur nous les renvoie vers les utilisateurs grace aux commandes suivante

  con.query("SELECT ... from ...", function (err, result) {
	response.send(JSON.stringify(result));
  });

Sécuritée de la base de donnée

Afin de sécuriser au mieux notre base de donnée, celle-ci n'est pas accessible depuis l'extérieur.

Seul le serveur a accès à celle-ci. Nous avons également créé qu'un seul utilisateur. Celui-ci est protégé par un mot de passe généré alléatoirement. Le nom d'utilisateur a également été généré alléatoirement avec ce site.

L'utilisateur dispose de ces privilèges : INSERT, SELECT, UPDATE, DELETE

refus de connexion à la base de donnée

Sauvegarde

Afin d'éviter toute perte de donnée, nous allons mettre en place un backup des données toutes les 48H. Celui-ci va être enregistré sur le google drive de l'ASBL

Schéma de la DB

diagrame de notre db