Menu

Sequelize

Sequelize

C'est un ORM (Mapping objet-relationnel), en gros Sequelize s'occupe de créer lui même les requêtes

On lui donne des models de notre BDD une adresse de connection et des choses à requêter

Doc ici

1# Init 2npm i sequelize 3

Pour ce connecter a une DB avec sequelize :

1const Sequelize = require("sequelize"); 2 3function getConnexion() { 4 return new Sequelize("postgres://user:password@localhost/database", { 5 define: { 6 createdAt: "created_at", 7 updatedAt: "updated_at", 8 }, 9 logging: true, 10 }); 11} 12 13module.exports = getConnexion; 14

On fait les models des table de notre DB (pas la peine d'être aussi précis mais c'est toujours mieux quand même) :

1const { Model, DataTypes, literal } = require("sequelize"); 2const sequelize = require("./getConnexion")(); 3 4class Product extends Model {} 5 6Product.init( 7 { 8 id:urandomNumber()n type: DataTypes.INTEGER, 9 unique: true, 10 autoIncrement: true, 11 primaryKey: true, 12 }, 13 name: { 14 type: DataTypes.STRING, 15 allowNull: false, 16 }, 17 created_at: { 18 type: DataTypes.DATE, 19 allowNull: false, 20 defaultValue: literal("CURRENT_TIMESTAMP"), 21 }, 22 updated_at: { 23 type: DataTypes.DATE, 24 allowNull: true, 25 }, 26 }, 27 { 28 sequelize: sequelize, 29 tableName: "product", 30 modelName: "Product", 31 } 32); 33 34module.exports = Product; 35

Puis on indique les relations entre les tables :

1const Product = require("./product"); 2const User = require("./user"); 3 4Product.belongsTo(User, { 5 foreignKey: "user_id", 6 as: "user", 7}); 8 9User.hasMany(Product, { 10 foreignKey: "user_id", 11 as: "products", 12}); 13 14module.exports = { 15 Product, 16 User, 17}; 18

Pour l'utilliser :

1const { Product } = require("../models"); 2 3async function getAllProduct(req, res) { 4 try { 5 const allProduct = await Product.findAll(); 6 7 res.render("product", { 8 products: allProduct, 9 }); 10 } catch (err) { 11 console.error(err); 12 } 13} 14 15module.exports = { getAllProduct }; 16