Semaine 10 : Node.js BDD - SimplonSt-Gaudens/programme-web-dev-promo-2 GitHub Wiki

Projet : Persistance des données avec Node.js

Ce projet va vous permettre d'explorer la sauvegarde de données depuis une application écrite en javascript, exécutée par nodeJs et ce en utilisant 3 bases de données différentes.

Prérequis

  • Node dernière version installée avec npx/npm/yarn
  • Des instances de serveur Mysql, MongoDb et une BDD SqLite
  • Une interface graphique utilisateur pour chaque BDD ou avec vos petits doigts en ligne de commande.

Objectifs

  • Acquérir le savoir pour interagir avec une BDD depuis un serveur Node.
  • Renforcer la connaissance des systèmes de persistances disponibles en travaillant sur Mysql, sqLite et MongoDb.
  • Etre capable de choisir un système de persistance adapté.

Contexte

Une application doit être capable de fournir le dernier état connu du système après un redémarrage.

Intention

Etre capable de persister des données depuis un applicatif Node.

Compétences concernées

  • C2 : Concevoir une base de données
  • C3: Mettre en place une base de données
  • C5 : Développer des composantes d’accès aux données.

Critères de réussite

  • Le projet est bien présent dans un repo github dont le lien est fourni par l’apprenant.
  • Les différents commits réalisés correspondent bien aux différentes étapes du projet.
  • Le README comporte le quick start du projet qui détaille l'installation et la prise en main de l’applicatif.
  • Je peux ajouter et supprimer un post.
  • Je peux ajouter un commentaire sur un post.
  • Je peux voir la liste des posts d’un utlisateur.
  • Les modèles de conception des bases sont présents dans le github.
  • Le Kaban réflète bien le déroulement du projet
  • Le journal de bord est bien incrémenté chaque jour.
  • Chaque groupe a vu au moins deux systèmes de persistance et les trois systèmes de persistance ont été couverts par l’ensemble des projets des apprenants.

Livrables

  • Adresse du repo github.
  • Modèles de conception.
  • Requêtes de création des bases/tables utilisées.
  • Version en ligne.

Groupes

  • SimonD, SimonR, Marion, Christopher et Vanessa.
  • Philippe, Geoffrey, Guillaume, David et Rachid.
  • Clément, Valentin, Julien, Sandrine et Edmond.

DeadLine

A rendre avant dimanche minuit

Réalisations attendues

Réaliser un applicatif node qui permet de gérer un blog :

  • Ajouter/supprimer un post pour un utilisateur,
  • Ajouter/supprimer un commentaire sur un post.
  • Afficher la liste des post d’un utilisateur.

Conseils

  • Faire des synchronisations régulières que vous fixez à l'avance
  • Faire et seulement faire ce qui est demandé (garder le focus sur le métier à implémenter).
  • Prendre le temps de bien se répartir le travail
  • Aider les autres
  • Garder son calme et rester professionnel
  • Bien définir les tâches de chacun
  • Jouer collectif, seul vous n'irez pas loin
  • N’oubliez pas que vous avez d’autres exercices et projets à rendre

Bonus

  • Afficher la liste des 10 derniers posts.
  • N’afficher que des posts publiés
  • Gérer les utilisateurs dans la Bdd
  • Comment améliorer le chainage des requêtes ?
  • Pouvoir changer facilement le système de persistance utilisé par l’applicatif en une ligne de code.

Planning de la semaine

Lundi

Stand Up (15 min.)

Présentation du projet de la semaine

Veille

  • Mercredi : procédures stockées en MySQL (Clément)
  • Jeudi : OWASP (David)
  • Vendredi : bcrypt (Rachid)
  • Mardi : cryptographie (Sandrine)

Brainstorming (10 min.)

Qu'est-ce qu'une BDD ? à quoi sert-elle ? Il y a t-il différentes catégories de Bdd ? pourquoi ? et selon vous pourquoi vous fait-on travailler sur trois BDD différentes ?

Etape du jour : Connexion à une des trois Bdd

  • Constituer 3 groupes de 5 personnes
  • Choix des deux Bdd du projet par groupe. Attention organisez-vous et discutez, toutes les bases de données doivent être couvertes.
  • Modélisation de la table post
  • Création de la table
  • Script d’établissement de la connexion

Resources

Conseil : Prenez le temps d'explorer les sites officiels, de comprendre comment ils sont organisés et où trouver la bonne information. Pourquoi ? Parce que c'est souvent La meilleure source d'information.

Debriefing : 15 min avant la fin

On attend des retours sur votre journée.

Mardi

Stand Up (15 min.)

Retour des formateurs sur la semaine précédente : 15 min.

:smiling_imp: KATA

J'ai un chat et un chien que j'ai eu en même temps ils s'appellent : kitten et puppy.
C'était il y a quelques humanYears.
Retourner leur âge respectif tel que : [humanYears,catYears,dogYears] 

_NOTES:_

humanYears >= 1

*Equivalence des années pour le chat :*

* 15 années de chat pour la première année humaine
* +9 années de chat pour la seconde année humaine
* +4 année de chat pour chaque année humaine suivante.

*Equivalence des années pour le chien :*

* 15 années chien pour la première année humaine
* +9 années chien pour la seconde année humaine
* +5 années chien pour chaque année humaine suivante.

Etape du jour : Insertion/suppression d’un post

  • Insertion d’un post
  • Suppression d’un post
  • Organisation du code pour traiter plusieurs commandes (réflexion stratégique)

Debriefing : 15 min avant la fin

Mercredi

Stand Up : 15 min.

Etape du jour : Insertion des commentaires et afficher la liste des posts d’un user

  • Modéliser la table commentaire
  • Création de la table
  • Insertion d’un commentaire

Debriefing : 15 min avant la fin

Jeudi

Stand Up : 15 min.

:smiling_imp: Randori

J'ai un chat et un chien qui s'appellent Kitten et Puppy.

J'ai oublié à quel moment je les ai eus mais je connais leurs âges respectifs 
en année de chat et en année de chien.

Trouver depuis combien de temps je possède Kitten et Putty. A retourner sous forme de liste [ownedCat, ownedDog]

NOTES:
Voir les équivalences utilisées mardi.
Les résultats doivent être arrondis.

Etape du jour : Réitérer l’exercice sur la deuxième Bdd choisie par le groupe

Vendredi :

Stand Up : 15 min.

Etape du jour : Réitérer l’exercice sur la deuxième Bdd choisie par le groupe

Présentations

Quelques ressources tutos et autres

Débuter avec Mongodb

Accès mysql avec node

Un récap sur Nodejs