Nodejs:  Modifier un produit

Les étapes à suivre

  1. 1Model: créer la fonction update() dans le model models/Produit.js qui permet d'exécuter la requêts sql update produits set nom=?...where id=?
  2. 2Controller: Ajouter la fonction modifier() dans le le controller controllers/ProduitController.js qui permet d'appeler la méthode details() du model Produit.js  afin de remplir le forumlaire de la vue views/produits/modifier.ejs
  3. 3Routes: Ajouter une ligne de routage dans le fichier de routage routes/ProduitRoutes.js
    routerProduits.get('/modifier/:id', produitController.modifier);
    qui permet de mapper la route produits/modifier/id et la fonction modifier() du controlleur
  1. 4Controller: Ajouter la fonction modifierValidation() dans le le controller controllers/ProduitController.js qui permet de récupérer l'objet modifié et appeler la méthode update() du model Produit.js afin de valider la modification
  2. 5Routes: Ajouter une ligne de routage dans le fichier de routage routes/ProduitRoutes.js
    routerProduits.post('/modifier/:id', produitController.modifierValider);
    qui permet de mapper la route POST: produits/modifier/id et la fonction modifierValidation() du controlleur
  1. 6Server: lancer le serveur node Serveur.js

1.Model: Créer la fonction update() dans le model models/Produit.js

/*Modifier un produit dont id est passé en paramètre*/
Produit.update = function(id, produit, result){
dbConn.query("UPDATE produits SET nom=?,marque=?,prix=?,qtestock=? WHERE id = ?", [produit.nom,produit.marque,produit.prix,produit.qtestock, id], function (err, res) {
if(err) {
result(null, err);
}else{
result(null, res);
}
});
};

2.Controller: Ajouter la fonction modifier() dans controllers/ProduitController.js

/* afficher le formulaire pour modifier un produit */
exports.modifier = function(req, res) {
/*récupérer le produit by id */
Produit.findById(req.params.id, function(err, produit) {
/*Envoye le produit à la vue modifier */
res.render((__dirname+'/../../src/views/produits/modifier.ejs'),{produit:produit[0]});
});
};

3.Routes: Ajouter la route das le fichier routes/ProduitRoutes.js

/* afficher le formulaire pour modifier un produit */
routerProduits.get('/modifier/:id', produitController.modifier);

4.Controller: Ajouter la méthode modifierValidation() dans controllers/ProduitsController.js

/*Valider la modification d'un produit*/
exports.modifierValidation = function(req, res) {
/*récupérer l'objet
reg.body={
id:
nom:
marque:
prix:
qtestock:
}
Puis instancier un objet
*/
const new_produit = new Produit(req.body);
/*vérifier si tout les champs sont remplis*/
if(Produit.verifier(new_produit)){
/*En cas d'erreur envoyer un message d'erreur*/
req.flash("erreur","Erreur de modification")
/*redirection vers la vue modification pour corriger les erreurs reessayer la modification*/
res.redirect('/modifier/'+new_produit.id);
}else{
/*OK pas d'erreur =>on appele la méthode update du model Produit*/
Produit.update(req.params.id, new_produit, function(err, produit) {
if (err)
{
req.flash("erreur","Erreur de modification")
/*redirection vers la vue modification pour corriger les erreurs reessayer la modification*/
res.redirect('/modifier/'+new_produit.id);
}
else
{
req.flash("success",new_produit.nom+"Le produit est bien modifier")
res.redirect('/produits/');
}
});
}
};

5.Routes: Ajouter la route das le fichier routes/ProduitRoutes.js

/*Valider la modification d'un produit */
routerProduits.post('/modifier/:id', produitController.modifierValidation);

6.Server: : lancer le serveur node Serveur.js

node Serveur.js








Cours et TPs