Maison > Article > interface Web > Comment connecter PostgreSQL avec Node.js et Sequelize
Lorsqu'il s'agit de travailler avec des bases de données, les développeurs sont souvent confrontés au choix entre utiliser des requêtes de base de données brutes ou exploiter des bibliothèques qui éliminent une partie de la complexité. Sequelize est l'une de ces bibliothèques : un ORM Node.js (Object-Relational Mapper) populaire qui fonctionne avec PostgreSQL, MySQL et d'autres bases de données relationnelles. Dans ce didacticiel, nous verrons comment utiliser Sequelize sur Node.js pour vous connecter à une base de données PostgreSQL, couvrant l'installation, la configuration, la création de modèle et l'exécution d'opérations CRUD.
Sequelize simplifie les interactions avec les bases de données en fournissant une couche d'abstraction sur les requêtes SQL. Il utilise la bibliothèque pg sous le capot pour se connecter à PostgreSQL. Pour démarrer avec Sequelize, suivez ces étapes :
Initialisez votre projet
Si vous démarrez un nouveau projet, initialisez un projet Node.js pour créer un fichier package.json :
npm init -y
Installer Sequelize et le pilote PostgreSQL
Installez Sequelize avec le pilote PostgreSQL pg :
npm install pg sequelize
Configurer la configuration de la base de données
Dans votre application Node.js, vous devez d'abord définir vos variables d'accès à la base de données PostgreSQL :
const user = '<postgres_user>'; const host = 'localhost'; const database = '<postgres_db_name>'; const password = '<postgres_password>'; const port = '<postgres_port>';
Importer Sequelize
Importez les objets nécessaires depuis Sequelize :
const { Sequelize, Model, DataTypes } = require('sequelize');
Initialiser Sequelize
Créez une nouvelle instance Sequelize avec la configuration de votre base de données :
const sequelize = new Sequelize(database, user, password, { host, port, dialect: 'postgres', logging: false });
Ici, nous spécifions dialect : 'postgres' pour indiquer que nous utilisons PostgreSQL. Nous désactivons également la journalisation des requêtes SQL pour garder la sortie de la console propre, bien que vous puissiez l'activer pendant le débogage.
Les modèles dans Sequelize représentent les tables de votre base de données. Chaque modèle définit la structure de la table correspondante et fournit des méthodes pour interagir avec elle.
Définir un modèle
Supposons que vous ayez une table nommée cats avec des colonnes nom et âge. Vous pouvez définir un modèle Sequelize pour cette table comme suit :
class Cat extends Model {} Cat.init({ name: { type: DataTypes.STRING, allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: false } }, { sequelize, modelName: 'cat', timestamps: false });
Dans cet exemple :
- `Cat` extends Sequelize’s `Model` class. - `init()` sets up the model with column definitions and configuration. - We use `DataTypes.STRING` and `DataTypes.INTEGER` to define column types. - `timestamps: false` disables automatic timestamp fields (`createdAt` and `updatedAt`).
Sequelize propose une gamme de méthodes pour interroger votre base de données. Voici comment récupérer des données à l’aide de Sequelize :
Récupérer tous les enregistrements
Pour récupérer tous les enregistrements de la table cats :
const results = await Cat.findAll(); console.log(results);
findAll() renvoie une promesse qui se résout en un tableau d'instances représentant les lignes du tableau.
Limiter les colonnes récupérées
Si vous n'avez besoin que de certaines colonnes, utilisez l'option d'attributs :
const results = await Cat.findAll({ attributes: ['age'] }); console.log(results);
Ajouter une clause WHERE
Pour filtrer les résultats, utilisez l'option où. Par exemple, pour retrouver tous les chats âgés de 8 ans :
const results = await Cat.findAll({ where: { age: 8 } }); console.log(results);
Pour retrouver tous les chats âgés de 5 ans ou plus :
const { Op } = require('sequelize'); const results = await Cat.findAll({ where: { age: { [Op.gte]: 5 } } }); console.log(results);
Appliquer le tri et la limitation
Pour trier les résultats et limiter le nombre de lignes renvoyées :
const results = await Cat.findAll({ limit: 10, order: [ ['name', 'DESC'] ] }); console.log(results);
Pour insérer un nouvel enregistrement dans la base de données, utilisez la méthode create() :
const name = 'Garfield'; const age = 8; const result = await Cat.create({ name, age }); console.log('New Cat:', result);
Pour mettre à jour les enregistrements existants, utilisez la méthode update() :
await Cat.update( { age: 9 }, { where: { name: 'Garfield' } } );
Si vous souhaitez mettre à jour toutes les lignes (soyez prudent avec cette opération), omettez la clause Where :
await Cat.update( { age: 10 } );
Dans ce tutoriel, nous avons exploré comment utiliser Sequelize pour interagir avec une base de données PostgreSQL. Nous avons commencé par installer et configurer Sequelize, puis avons créé des modèles pour représenter les tables de base de données.
Nous avons appris à interroger, insérer et mettre à jour des données à l'aide des méthodes de Sequelize. Ce puissant ORM simplifie le travail avec les bases de données relationnelles en fournissant une abstraction de niveau supérieur sur les requêtes SQL.
Pour une exploration plus approfondie de Sequelize et de ses fonctionnalités, consultez les ressources suivantes :
En tirant parti de Sequelize, vous pouvez rationaliser les interactions de votre base de données et vous concentrer davantage sur la création d'applications robustes. Bon codage !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!