Sequelize est un mappeur objet-relationnel (ORM) Node.js qui fournit une API facile à utiliser pour les bases de données relationnelles telles que Oracle, PostgreSQL, MySQL, MariaDB, SQLite, et plus encore.


PostgreSQL est un système de gestion de base de données relationnelle (SGBDR) open source largement utilisé et réputé pour ses fonctionnalités étendues, son excellente sécurité et son évolutivité.

PostgreSQL est compatible avec de nombreux langages de programmation, notamment JavaScript, ce qui en fait un choix idéal pour les applications Web et les applications axées sur les données. Vous apprendrez ici à mettre en place une base de données Postgres dans Node.js en utilisant Sequelize.


Étape 1 : Installation des dépendances

Avant de pouvoir utiliser PostgreSQL, vous devez l’installer sur votre système. Pour télécharger PostgreSQL, allez sur le site Web de PostgreSQL et choisissez votre système d’exploitation. Si vous rencontrez des problèmes au cours de ce processus sous macOS, consultez la rubrique Installation de PostgreSQL sous macOS.

Vous pouvez également utiliser PostgreSQL sur le cloud en tirant parti de plateformes telles qu’ElephantSQL, qui proposent PostgreSQL en tant que service.

Ensuite, installez sequelize en exécutant la commande suivante :

 npm install sequelize

Ensuite, installez le pilote de base de données PostgreSQL en exécutant la commande suivante :

 npm install pg pg-hstore

Étape 2 : Connexion à une base de données PostgreSQL

Dans le répertoire source de votre projet, créez un fichier config dossier. Dans le dossier config créez un dossier db.js fichier. Ce fichier contiendra tout le code connectant votre application Node.js à une base de données PostgreSQL.

Ensuite, dans votre db.js fichier, importation Sequelize de sequelize.

 const { Sequelize } = require("sequelize");

Ensuite, vous devez créer un Sequelize instance. Cette instance prend les paramètres de connexion tels que le nom de la base de données, le nom d’utilisateur et le mot de passe comme arguments. Elle peut également prendre un seul URI de connexion comme argument.

Par exemple :

 // Connection parameters
const sequelize = new Sequelize('database', 'username', 'password')

// with URI
const sequelize = new Sequelize(process.env.POSTGRESQL_DB_URI)

De plus, ce constructeur prend un objet de configuration comme argument optionnel.

Ensuite, testez votre connexion sequelize en ajoutant le code ci-dessous dans votre fichier db.js fichier :

 const testDbConnection = async () => {
  try {
    await sequelize.authenticate();
    console.log("Connection has been established successfully.");
  } catch (error) {
    console.error("Unable to connect to the database:", error);
  }
};

Le bloc de code ci-dessus appelle la fonction sequelize.authentifier() pour tester si la connexion est correcte et imprime « Connection has been established successfully. » à la console si c’est le cas. S’il y a une erreur de connexion, elle affiche « Impossible de se connecter à la base de données : » avec l’erreur.

Enfin, exporter l’instance de sequelize et le fichier testDbConnection fonction.

 module.exports = { sq: sequelize, testDbConnection };

Étape 3 : Création d’un modèle Sequelize

Dans le répertoire source de votre projet, créez un fichier modèles dossier. Ce dossier contiendra tous vos modèles sequelize. Ensuite, créer un fichier modèle. Le nom que vous donnez au fichier doit fournir des informations sur la représentation du modèle.

Dans votre fichier modèle, importez l’instance sequelize.

 // example.js
const { sq } = require("../config/db");

Ensuite, importez DataTypes de sequelize.

 const { DataTypes } = require("sequelize");

DataTypes vous permet de définir le type de données requis pour chaque propriété de votre modèle.

Vous pouvez créer un nouveau modèle sequelize représentant une table dans votre base de données en appelant la fonction définir sur votre instance sequelize.

Le site définir La méthode prend deux arguments : Le nom du modèle et un objet attributs. Le nom du modèle représente le nom du modèle. L’objet attributs représente les colonnes de la base de données, chaque propriété représentant une colonne.

Voici un exemple de modèle sequelize :

 const User = sq.define("user", {
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    primaryKey: true,
  },

  fullName: {
    type: DataTypes.STRING,
  },
  
  age: {
    type: DataTypes.INTEGER,
  },

  employed: {
    type: DataTypes.BOOLEAN,
    defaultValue: false,
  },
});

Le bloc de code ci-dessus définit un modèle Utilisateur modèle avec un e-mail, nom complet, âgeet employés propriétés.

Le site e-mail La propriété est un type de chaîne de caractères qui ne peut pas être vide (allowNull : false) et sert également de clé primaire pour l’objet Utilisateur table (primaryKey : true). Le site nom complet et le âge Les propriétés sont une chaîne de caractères (DataTypes.STRING) et le type entier (DataTypes.INTEGER), respectivement. Le site employé est un type booléen avec une valeur par défaut de falsece qui signifie que si elle n’est pas spécifiée, elle sera automatiquement définie comme fausse dans la base de données.

Ensuite, appelez la méthode sync sur votre modèle. Cette méthode prend un objet de configuration comme argument. En fonction des options de l’objet de configuration, la méthode sync La méthode peut :

  • Utilisateur.sync(): Crée la table si elle n’existe pas et ne fait rien si elle existe.
  • User.sync({ force : true }): Créer la table et supprimer la première si elle existe déjà.
  • Utilisateur.sync({ alter : true }): Vérifier l’état actuel de la table dans la base de données et effectuer les modifications nécessaires dans la table pour la faire correspondre au modèle.

Par exemple :

 User.sync().then(() => {
  console.log("User Model synced");
});

Le bloc de code ci-dessus crée la table de la base de données pour l’attribut Utilisateur Le modèle de l’utilisateur s’affiche s’il n’existe pas et ne fait rien s’il existe.

Enfin, exportez votre modèle :

 module.exports = User;

Interrogation d’une base de données PostgreSQL

Sequelize fournit diverses méthodes qui vous permettent d’interagir avec votre base de données PostgreSQL sans écrire de commandes SQL brutes.

Sauvegarde des données dans PostgreSQL

Pour enregistrer des données dans une base de données PostgreSQL, appelez la fonction créer sur votre modèle et passez un objet qui implémente le modèle PostgreSQL comme argument.

Par exemple :

 const mike = User.create({
  email: "mike@email.com",
  fullName: "Mike Smith",
  age: 30,
  employed: true,
});

Le bloc de code ci-dessus crée un Utilisateur instance de mike dans votre base de données et génère automatiquement un identifiant unique.

Récupération de données depuis PostgreSQL

Les données peuvent être récupérées de plusieurs façons à partir d’une base de données PostgreSQL en utilisant sequelize, mais cela dépend de la nature des données que vous voulez recevoir.

Les méthodes les plus courantes pour récupérer des données sont les suivantes findOne et findAll méthodes. Le site findAll renvoie toutes les instances de données qui répondent à une requête donnée, tandis que l’option findOne renvoie la première instance qui satisfait à la requête.

Par exemple :

 // Find all users
const users = await User.findAll();

Le code ci-dessus renverra tous les Utilisateur dans la base de données.

Vous pouvez filtrer les données retournées à l’aide de la fonction déclaration. Cette instruction vous permet d’ajouter certaines conditions à la requête. Votre requête ne renverra que les instances qui répondent à ces conditions.

Par exemple :

 User.findAll({
  where: {
    employed: false
  }
});

Le code ci-dessus renverra tous les Utilisateur avec leurs employés propriété fixée à false dans la base de données.

Mise à jour des données sur PostgreSQL

Vous pouvez mettre à jour les données de la base de données PostgreSQL en appelant la fonction update et en passant un filtre comme argument.

Par exemple :

 await User.update({ employed: true }, {
  where: {
    employed: false
  }
});

Le code ci-dessus modifie tous les fichiers Utilisateur Les instances avec un employé valeur de faux à vrai.

Alternativement, vous pouvez mettre à jour les données en modifiant manuellement les propriétés que vous souhaitez changer et en appelant la fonction sauvegarder sur l’instance.

Par exemple :

 const userMike = await User.findOne({ where: { email: "mike@email.com" } });

if(userMike !== null) {
  userMike.email = "newMike@gmail.com"
  await userMike.save()
}

Le code ci-dessus interroge la base de données pour un utilisateur ayant l’adresse électronique « mike@email.com » en utilisant l’attribut findOne méthode. Si l’utilisateur est trouvé, il réaffecte la propriété email à « newMike@gmail.com » et appelle la méthode sauvegarder pour mettre à jour la base de données.

Suppression de données sur PostgreSQL

Vous pouvez supprimer des données sur PostgreSQL en appelant la fonction destroy et en passant un filtre comme argument.

Par exemple :

 await User.destroy({
  where: {
    email: "newMike@gmail.com"
  }
});

Le code ci-dessus interroge la base de données pour un utilisateur ayant l’email « newMike@gmail.com » et supprime l’utilisateur de la base de données.

Avantages de l’utilisation de PostgreSQL avec Sequlize

L’écriture de requêtes SQL brutes pour interagir avec une base de données PostgreSQL peut s’avérer fastidieuse. Avec Sequelize, vous pouvez facilement définir des modèles, créer des associations entre eux et interroger la base de données avec une API simple et intuitive. Vous pouvez également utiliser d’autres ORM, tels que TypeORM, pour interagir avec une base de données PostgreSQL sans avoir à écrire des requêtes SQL brutes.