2015/2016 Antoine Roux, Mickael Bettinelli
Plan
Introduction
I- Les modèles
II- Les promesses
III- Les fonctionnalités
IV- Démonstration
Conclusion
Présentation
1. var sequelize = new Sequelize('database', 'username',
Sequelize est un ORM basé sur les promesses 'password', {
pour [Link] et [Link] 2.
3.
host: 'localhost',
dialect:
'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql',
Compatibilité avec PostgreSQL, MySQL, 4. pool: {
max: 5,
MariaDB, SQLite et MSSQL 5. min: 0,
6. idle: 10000
7. },
// SQLite only
Installation avec NPM : 8. storage: 'path/to/[Link]'
9. });
Installation des drivers “postgres” et d’une dépendance pour
10.
(dé)sérializer du json, installation de Sequelize 11. var sequelize = new
12. Sequelize('postgres://user:pass@[Link]/dbname');
$ npm install --save-dev pg-hstore pg
$ npm install --save sequelize
Les modèles - En théorie
Objets permettant d’accéder à une table.
Disposent des noms de colonnes de la table.
Création des attributs createAt et updateAt automatique.
Accesseurs pour accéder aux données du modèle.
Les modèles - En javascript
1. var Modele = [Link](‘maTable’, { :
2. attribut: { :
3. type: [Link], :
4. primaryKey: true,
5. set: function(val) {
6. // setter qui mets en majuscule avant ajout dans le modèle
[Link]('attribut', [Link]());
}
7. }
8. // [Link], [Link] ... :
9. }) :
Possibilité d’ajouter des options aux attributs (primaryKey, unique, ...).
Plusieurs types de données disponibles comme INTEGER, STRING, TEXT.
Les promesses
Système de gestion des méthodes asynchrones
.then(function() {}); ⇒ exécution de la fonction lorsque la promesse est finie.
.catch(function() {}); ⇒ exécution de la fonction lors d’une erreur.
.done(function() {}); ⇒ exécution de la fonction si la promesse fini avec succès.
.all([promese1, promese2]).then(function() {} );
⇒ exécution de la fonction lorsque toutes les promesses sont terminées.
Les fonctionnalités - La syntaxe
1. [Link]({force: true}) // Synchronisation du modèle avec la table du SGBD
2. // Création de la table si elle n’existe pas, force : efface et récrée la table
3.
4. // Insère une ligne dans la table
5. [Link]( {id: “6”, nom: “toto”, mail: “toto@[Link]”} );
6.
7. [Link](); // Efface la table
8.
9. [Link]({ // Lance un Select sur la table
10. attributes: ['id', 'titre', 'description', 'date', 'numC'],
11. where: {
12. date: {
13. gt: 2010 // Si l’attribut est plus grand que 10
14. },
15. }
16. }).then(function(resultat) {
17. //traitement du résultat
18. });
Les fonctionnalités - Quelques méthodes utiles
Relier une clé étrangère avec une clé primaire d’une autre table
1. [Link](Company); // Clé étrangère : de un à un
2. [Link](User, {as: 'Workers'}) // Clé étrangère : de un à plusieurs
Exécution d’une requête SQL
1. [Link]('SELECT * FROM "Chercheurs"', { model: Chercheurs}).then( function(p) {
2. [Link](p);
3. });
Import d’un modèle depuis un fichier stocké sous forme de module
1. [Link](“./[Link]”);
Avant Fragmentation
Après Fragmentation
Démonstration
BD : Lyon BD : Valence
Chercheur Chercheur
Publis
Chercheur
for inner join Query publis …
id
...
#IdChercheur
Publis < 2010 Publis >= 2010
... …
Query publis
#IdChercheur #IdChercheur
Pour conclure Autre ORM javascript :
Manque du SGBD Oracle - Bookshelf
Simple à prendre en main - [Link]
- Pg-promise
Open Source - offShore
- [Link]
Bonne communauté
- [Link]
Utilisé par :
- timeOff : [Link]
- Verizon Cloud : [Link]
- SEAN : Full stack JS sql based on MEANJS.
Questions
Documentation officielle : [Link]
Tutoriel : [Link]
Github : [Link]