Tutoriel pour utiliser Sequelize, l'ORM JavaScript
par
, 25/01/2016 à 23h49 (3809 Affichages)
Pour faire suite à mon précédant post : "Sequelize un ORM pour JavaScript", voici un tuto minimaliste pour faire afficher insérer et supprimer des objets dans une base de données relationnelle avec Node.js grâce à sequelize.
J'ai choisi comme SGBD/R PostgreSQL
L'objet à manipuler sera basé sur la classe personne :
Le template pour la vue sera le suivant :
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 'use strict'; module.exports = class Personne { constructor(firstName, lastName) { this.prenom = firstName; this.nom = lastName; } decrire() { console.log("nom : " + this.nom + " et prenom : " + this.prenom); } //......... //getter setter quelques méthodes pratiques //......... }
L'initialisation de la connexion à la bdd, le lancement du serveur HTTP, et la gestion des routes seront gérés ici :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <html> <head> <title>Carnet d'adresses</title> </head> <body> <h1>Carnet d'adresses</h1> <h2>Liste des utilisateurs</h2> <table> <thead> <tr> <th>Nom</th> <th>Prénom</th> </tr> </thead> <tbody> <% for(var i = 0 ; i < nbre ; i++) { %> <tr> <td><%= liste[i].nom %></td> <td><%= liste[i].prenom %></td> </tr> <% } %> </tbody> </table> <form id="ajouter" action="/ajouter" method="post"> <h2>Ajouter un utilisateur</h2> <p><label> Nom: </label> <input type="text" id="nom" name="nom"></input></p> <p><label> Prénom: </label> <input type="text" id="prenom" name="prenom"></input></p> <input type="submit" value="Ajouter"></input> </form> <form id="supprimer" action="/supprimer" method="post"> <h2>Supprimer un utilisateur</h2> <p><label> Nom: </label> <input type="text" id="nomSup" name="nomSup"></input></p> <p><label> Prénom: </label> <input type="text" id="prenomSup" name="prenomSup"></input></p> <input type="submit" value="Supprimer"></input> </form> </body> </html>
Et voila comme ce Framework est puissant et simple à utiliser
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 'use strict'; var app = require('express')(); var bodyParser = require('body-parser'); var Sequelize = require('sequelize'); var Personne = require('./Personne'); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // initialisation de sequelize var sequelize = new Sequelize('test', 'postgres', 'root', { host: 'localhost', dialect: 'postgres', pool: { max: 5, min: 0, idle: 10000 }, }); // definition du modele personnes var personnes = sequelize.define("personnes", { nom: Sequelize.STRING, prenom: Sequelize.STRING }); personnes.sync().then(function(arg) { console.log("synchro ok"); }); var creerPersonne = function(prenom, nom){ return (new Personne(prenom, nom)); } var ajouterPersonne = function(pers){ // inserer une personne en base personnes.create({ nom: pers.nom, prenom: pers.prenom }).then(function(arg){ console.log("1 ligne ajoutée"); }); } var supprimerPersonne = function(pers){ personnes.destroy({where: {nom: pers.nom, prenom: pers.prenom}}).then(function(arg){ console.log(arg); }); } app.get("/", function(req, res) { personnes.findAndCountAll().then(function(result) { res.render('index.ejs', {liste: result.rows, nbre: result.count}); }); }) .post('/ajouter', function(req, res) { if (req.body.nom != '' && req.body.prenom != '') { var pers = creerPersonne(req.body.prenom, req.body.nom); ajouterPersonne(pers); } res.redirect('/'); }) .post('/supprimer', function(req, res) { if (req.body.nomSup != '' && req.body.prenomSup != '') { var pers = creerPersonne(req.body.prenomSup, req.body.nomSup); supprimerPersonne(pers); } res.redirect('/'); }); app.listen(5000);