AIDE SUR LES NœUDS

Sequelize node js (Comment ça fonctionne pour les développeurs)

Publié septembre 29, 2024
Partager:

Sequelize Node.JS

Introduction

Dans le monde du développement web contemporain, créer des applications évolutives et fiables nécessite des outils et bibliothèques puissants capables de gérer efficacement les opérations front-end et back-end. Deux utilitaires de ce type sont Sequelize et IronPDF, qui, lorsqu'ils sont combinés, offrent une solution complète pour la production de PDF et la gestion de bases de données dans les applications Node.js.

Sequelize est un Object Relational Mapping basé sur des promesses.(ORM)pour Node.js qui facilite le travail avec les bases de données SQL. Avec son large support pour les dialectes SQL, y compris PostgreSQL, MySQL, SQLite et Microsoft SQL Server(MSSQL), les développeurs peuvent utiliser JavaScript pour construire des modèles et des relations. Sequelize améliore l'expérience du développeur en abstraisant les requêtes de bases de données SQL en une syntaxe compréhensible et simplifie les opérations de bases de données complexes avec des fonctionnalités telles que la validation de modèles, le chargement anticipé et les transactions.

Inversement, IronPDF est une bibliothèque robuste pour générer des PDF qui interagissent facilement avec les applications Node.js. Elle permet aux programmeurs d'ajouter, de modifier et de supprimer du contenu des documents PDF. Avec sa capacité exceptionnelle à convertir des informations HTML en format PDF, IronPDF est un excellent outil pour produire directement des documents à partir d'applications en ligne, telles que des factures et des rapports.

Qu'est-ce que Sequelize Node.js ?

Sequelizepour Node.js est un puissant mappage objet-relationnel(ORM)qui offre un support de transaction solide, garantissant des opérations fiables et atomiques sur votre base de données. En utilisant le modèle Sequelize, les développeurs peuvent définir et interagir efficacement avec leurs structures de données. Des fonctionnalités telles que le chargement paresseux permettent d'optimiser les requêtes de base de données, en récupérant les données connexes uniquement lorsque cela est nécessaire. Le mappeur objet-relationnel Sequelize simplifie l'interaction avec la base de données en utilisant le chargement paresseux, ce qui facilite le travail avec une base de données d'exemple ou un système de production. Avec une configuration facile des identifiants de mot de passe de la base de données, Sequelize prend en charge plusieurs bases de données, y compris la base de données MySQL, ce qui en fait un choix polyvalent pour les applications Node.js.

Sequelize node js(Comment cela fonctionne pour les développeurs) : Figure 1 - Sequelize - Support solide des transactions

Fonctionnalités de Sequelize Node.js

Un mapper objet-relationnel populaire(ORM)pour Node.js appelé Sequelize facilite le travail avec les bases de données relationnelles et les requêtes SQL brutes. Voici quelques-unes de ses principales caractéristiques :

Promises : Contrairement aux callbacks conventionnels, Sequelize utilise des Promises pour les opérations asynchrones, ce qui permet d'avoir un code plus clair et plus facile à lire.

Support des bases de données : Il vous permet de choisir parmi une variété de bases de données relationnelles largement utilisées, y compris PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server, et plus encore.

Définition du Modèle : En utilisant des objets JavaScript, Sequelize vous permet de définir des modèles qui se connectent à vos tables de base de données. Par conséquent, la rédaction de SQL brut est moins nécessaire et la modélisation des données est simplifiée.

Associations : Sequelize est assez performant pour gérer les relations entre les tables. Vous pouvez spécifier des relations entre vos modèles, telles que un-à-plusieurs, plusieurs-à-plusieurs et un-à-un, et Sequelize gérera les requêtes SQL complexes en arrière-plan.

Transactions: Lors de l'exécution de plusieurs opérations de base de données, le solide support des transactions de Sequelize garantit la cohérence des données.

Synchronisation des données : Vos modèles et la structure de votre base de données peuvent être automatiquement synchronisés avec Sequelize. Cela peut être utile lors de la création ou de la mise à jour de tables basées sur vos définitions de modèles.

Migrations : Sequelize offre un système de migration efficace qui vous permet de gérer les modifications de la structure de la base de données au fil du temps. Maintenir l'alignement entre la structure de votre base de données et le code de l'application est impératif.

Validations : Avant que les données ne soient stockées dans la base de données, vous pouvez établir des règles de validation pour vos modèles afin de garantir l'intégrité des données.

Requêtes brutes : Bien que Sequelize encourage l'utilisation de sa couche d'abstraction, vous pouvez également l'utiliser pour exécuter des requêtes SQL brutes lorsque cela est nécessaire pour des charges de travail particulières.

Peuplement : Pour des raisons de test ou de développement, Sequelize offre un moyen de peupler votre base de données avec des données initiales.

Scopes : En définissant des filtres réutilisables pour vos requêtes de modèle, les scopes vous aident à mieux gérer la récupération de données complexes.

Ce ne sont là que quelques-unes des nombreuses fonctionnalités de Sequelize. C'est un outil inestimable pour les développeurs Node.js travaillant avec des bases de données relationnelles en raison de ses fonctionnalités complètes.

Créer et configurer Sequelize Node.js

Vous pouvez suivre ces étapes pour créer et configurer Sequelize avec SQLite3 dans un projet Node.js :

Installer les dépendances

Installez l'interface de commande Sequelize(interface en ligne de commande), SQLite3, et Sequelize en tant que dépendances dans votre projet.

npm install sequelize 
npm install sqlite3 
npm install sequelize-cli
npm install sequelize 
npm install sqlite3 
npm install sequelize-cli
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install sequelize npm install sqlite3 npm install sequelize-cli
VB   C#

Initialiser Sequelize

Commencer de zéro. Configurez la structure du projet et les fichiers de configuration avec Sequelize en utilisant la CLI.

npx sequelize-cli init
npx sequelize-cli init
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npx sequelize-cli init
VB   C#

Les répertoires et fichiers nécessaires pour votre projet Sequelize sont créés par la commande ci-dessus.

Configurer la base de données

Pour configurer la connexion à la base de données, modifiez le fichier config.json. Votre configuration SQLite3 pourrait ressembler à ceci :

{
  "development": {
    "dialect": "sqlite",
    "storage": "./database/development.sqlite"
  },
  "test": {
    "dialect": "sqlite",
    "storage": ":memory:"
  },
  "production": {
    "dialect": "sqlite",
    "storage": "./database/production.sqlite"
  }
}
{
  "development": {
    "dialect": "sqlite",
    "storage": "./database/development.sqlite"
  },
  "test": {
    "dialect": "sqlite",
    "storage": ":memory:"
  },
  "production": {
    "dialect": "sqlite",
    "storage": "./database/production.sqlite"
  }
}
"development":
  If True Then
	"dialect": "sqlite", "storage": "./database/development.sqlite"
  End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' , "test":
'  {
'	"dialect": "sqlite", "storage": ":memory:"
'  }
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' , "production":
'  {
'	"dialect": "sqlite", "storage": "./database/production.sqlite"
'  }
VB   C#

Différentes bases de données SQLite sont spécifiées dans cette configuration pour les environnements de test, de production et de développement.

Créer des modèles

Utilisez la CLI pour créer un fichier pour les modèles Sequelize. Par exemple, pour développer un modèle Utilisateur :

npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
VB   C#

Cette commande crée un fichier de migration dans le répertoire des migrations et un fichier modèle.(user.js)dans le répertoire des modèles.

Exécuter les migrations

Pour construire des tables dans la base de données SQLite, exécutez des migrations.

npx sequelize-cli db:migrate
npx sequelize-cli db:migrate
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npx sequelize-cli db:migrate
VB   C#

Utiliser Sequelize dans l'application

Vous pouvez désormais interagir avec la base de données SQLite dans votre application Node.js en utilisant Sequelize. Voici une illustration de la manière de configurer et d'utiliser Sequelize :

// Import Sequelize and model definitions
const { Sequelize, DataTypes } = require('sequelize');
const UserModel = require('./models/user');
// Create Sequelize instance
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/development.sqlite', // Path to SQLite database file
});
// Define models
const User = UserModel(sequelize, DataTypes);
// Synchronize models with the database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
  })
  .catch((error) => {
    console.error('Error synchronizing database:', error);
  });
// Example usage
(async () => {
  try {
    // Create a new user
    const user = await User.create({
      firstName: 'John',
      lastName: 'Doe',
      email: 'john@example.com',
    });
    console.log('User created:', user.toJSON());
    // Retrieve all users
    const users = await User.findAll();
    console.log('All users:', users.map((user) => user.toJSON()));
  } catch (error) {
    console.error('Error:', error);
  }
})();
// Import Sequelize and model definitions
const { Sequelize, DataTypes } = require('sequelize');
const UserModel = require('./models/user');
// Create Sequelize instance
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/development.sqlite', // Path to SQLite database file
});
// Define models
const User = UserModel(sequelize, DataTypes);
// Synchronize models with the database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
  })
  .catch((error) => {
    console.error('Error synchronizing database:', error);
  });
// Example usage
(async () => {
  try {
    // Create a new user
    const user = await User.create({
      firstName: 'John',
      lastName: 'Doe',
      email: 'john@example.com',
    });
    console.log('User created:', user.toJSON());
    // Retrieve all users
    const users = await User.findAll();
    console.log('All users:', users.map((user) => user.toJSON()));
  } catch (error) {
    console.error('Error:', error);
  }
})();
' Import Sequelize and model definitions
'INSTANT VB TODO TASK: The following line could not be converted:
const
	Private Sequelize, DataTypes } = require( 'sequelize');
Private const UserModel = require( './models/user');
' Create Sequelize instance
Private const sequelize = New Sequelize({ dialect: 'sqlite', storage: './database/development.sqlite'});
' Define models
Private const User = UserModel(sequelize, DataTypes)
' Synchronize models with the database
'INSTANT VB WARNING: The following constructor is declared outside of its associated class:
'ORIGINAL LINE: sequelize.sync({ force: true }).then(() =>
sequelize.s Sub New()
	console.log( 'Database synchronized');
End Sub
Private ).catch(([error]) =>
	console.error( '@Error synchronizing database:', @error);
)
' Example usage
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
(async () =>
If True Then
	Try
		const user = Await User.create({ firstName: 'John', lastName: 'Doe', email: 'john@example.com'});
		console.log( 'User created:', user.toJSON());
		const users = Await User.findAll()
		console.log( 'All users:', users.map((user) => user.toJSON()));
	Catch e1 As [error]
		console.error( '@Error:', @error);
	End Try
End If
)()
VB   C#

Ce code montre comment construire des modèles, les synchroniser avec la base de données, configurer Sequelize avec SQLite3, et effectuer des opérations fondamentales sur la base de données.

Sequelize node js(Comment ça marche pour les développeurs) : Figure 2 - Résultat de l'application Sequelize

Pour commencer

Pour commencer, nous allons construire une application exemple qui utilise IronPDF et Sequelize Node.js JS pour créer un document PDF avec des données d'utilisateur ou d'étudiant générées dynamiquement. Il s'agit d'un manuel d'instructions complet et détaillé.

Qu'est-ce qu'IronPDF ?

IronPDFest un ensemble de bibliothèques d'applications conçues pour simplifier la création, l'édition et la gestion des fichiers PDF. Avec cet outil, les développeurs peuvent extraire du texte et des images à partir de documents HTML, ajouter des en-têtes et des filigranes, fusionner de nombreux documents PDF, et réaliser une variété d'autres activités. La documentation exhaustive d'IronPDF et son API intuitive permettent aux développeurs de générer automatiquement des documents PDF de haute qualité. IronPDF comprend toutes les fonctionnalités nécessaires pour améliorer les flux de travail des documents et offrir des expériences utilisateur de premier ordre dans une variété de scénarios, tels que la création de documentation, de rapports et de factures.

Sequelize node js(Comment ça fonctionne pour les développeurs) : Figure 3 - IronPDF

Caractéristiques d'IronPDF

La conversion HTML en PDF est une méthode rapide et simple qui peut traiter tout type de texte HTML, y compris CSS et JavaScript.

Fusion de fichiers PDF : Pour simplifier la gestion des documents, combinez plusieurs documents PDF en un seul fichier PDF.

Extraction de texte et d'images : Extraire le texte et les images des fichiers PDF afin de les utiliser pour un traitement ou une analyse de données supplémentaires.

Filigrane : Pour des raisons de sécurité ou de branding, vous pouvez ajouter des filigranes de texte ou d'image aux pages PDF.

Inclure l'en-tête et le pied de page : Les en-têtes et les pieds de page des documents PDF vous permettent d'inclure un message personnalisé ou des numéros de page.

Installer IronPDF

Pour activer la fonctionnalité d'IronPDF, installez les packages nécessaires de Node.js en utilisant le gestionnaire de paquets node.

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
VB   C#

Intégrer l'objet Sequelize avec IronPDF Node.js

Intégrer Sequelize avec IronPDF dans une application Node.js vous permet de générer des documents PDF en fonction des données reçues d'une base de données. Voici un exemple de code qui montre comment y parvenir.

const { Sequelize, DataTypes } = require('sequelize');
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
// 1. Initialize Sequelize
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/data.sqlite', // Path to SQLite database file
});
// 2. Define Model
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  lastName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
    validate: {
      isEmail: true,
    },
  },
});
// 3. Synchronize Model with Database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
    // 4. Seed Database (optional)
    return User.bulkCreate([
      { firstName: 'John', lastName: 'Doe', email: 'john@example.com' },
      { firstName: 'Jane', lastName: 'Smith', email: 'jane@example.com' },
    ]);
  })
  .then(() => {
    // 5. Query Database and Generate PDF
    return User.findAll();
  })
  .then((users) => {
    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>User List</title>
        </head>
        <body>
          <h1>User List</h1>
          <ul>
            ${users.map((user) => `<li>${user.firstName} ${user.lastName} - ${user.email}</li>`).join('')}
          </ul>
        </body>
      </html>
    `;
    // Create PDF
    document.fromHtml(htmlContent).then((pdf) => {
      // Save PDF to file
      pdf.saveAs('user-list.pdf');
      console.log('PDF generated successfully');
    }).catch((error) => {
      console.error('Error generating PDF:', error);
    });
  })
  .catch((error) => {
    console.error('Error:', error);
  });
const { Sequelize, DataTypes } = require('sequelize');
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
// 1. Initialize Sequelize
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: './database/data.sqlite', // Path to SQLite database file
});
// 2. Define Model
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  lastName: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
    validate: {
      isEmail: true,
    },
  },
});
// 3. Synchronize Model with Database
sequelize.sync({ force: true }) // Set force to true to drop existing tables
  .then(() => {
    console.log('Database synchronized');
    // 4. Seed Database (optional)
    return User.bulkCreate([
      { firstName: 'John', lastName: 'Doe', email: 'john@example.com' },
      { firstName: 'Jane', lastName: 'Smith', email: 'jane@example.com' },
    ]);
  })
  .then(() => {
    // 5. Query Database and Generate PDF
    return User.findAll();
  })
  .then((users) => {
    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>User List</title>
        </head>
        <body>
          <h1>User List</h1>
          <ul>
            ${users.map((user) => `<li>${user.firstName} ${user.lastName} - ${user.email}</li>`).join('')}
          </ul>
        </body>
      </html>
    `;
    // Create PDF
    document.fromHtml(htmlContent).then((pdf) => {
      // Save PDF to file
      pdf.saveAs('user-list.pdf');
      console.log('PDF generated successfully');
    }).catch((error) => {
      console.error('Error generating PDF:', error);
    });
  })
  .catch((error) => {
    console.error('Error:', error);
  });
'INSTANT VB TODO TASK: The following line could not be converted:
const
If True Then
	Sequelize, DataTypes } = require( 'sequelize');
const IronPdf = require("@ironsoftware/ironpdf")
const document=IronPdf.PdfDocument
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: var config=IronPdf.IronPdfGlobalConfig const sequelize = new Sequelize({ dialect:
IronPdf.IronPdfGlobalConfig Const sequelize = New Sequelize({ dialect: 'sqlite', storage: './database/data.sqlite'});
Dim config As Dim=IronPdf.IronPdfGlobalConfig Const sequelize
' 2. Define Model
const User = sequelize.define( 'User', { firstName: { type: DataTypes.@STRING, allowNull: False}, lastName: { type: DataTypes.@STRING, allowNull: False}, email: { type: DataTypes.@STRING, allowNull: False, unique: True, validate: { isEmail: True}}});
' 3. Synchronize Model with Database
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'sequelize.sync({ force: True }).@then(() =>
'{
'	console.log('Database synchronized');
'	Return User.bulkCreate([{ firstName: 'John', lastName: 'Doe', email: 'john@example.com' }, { firstName: 'Jane', lastName: 'Smith', email: 'jane@example.com' },]);
'}
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
).then(() =>
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	document.fromHtml(htmlContent).@then((pdf) =>
'	{
'		pdf.saveAs('user-list.pdf');
'		console.log('PDF generated successfully');
'	}
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
	).catch(([error]) =>
VB   C#

Sequelize doit être initialisé en créant une instance et en lui passant l'emplacement du fichier de base de données SQLite. Créez un modèle User en définissant ses propriétés firstName, lastName, et email.

Synchronisation du modèle et de la base de données : Aligner le modèle avec la base de données. Dans ce cas, les tables qui existent déjà sont supprimées et recréées en utilisant l'option force: true.

Base de données de départ : Vous pouvez utiliser bulkCreate()pour éventuellement initialiser la base de données avec quelques données initiales.

Pour récupérer les données utilisateur, interrogez le modèle utilisateur dans la base de données et générez un PDF. Ensuite, rédigez du contenu HTML qui utilise la liste des utilisateurs comme exemple. Enfin, enregistrez le HTMLcontenu pour créer un fichier en utilisant IronPDF et le rendre en tant que document PDF.

Sequelize node js(Comment cela fonctionne pour les développeurs) : Figure 4 - Sortie PDF

Conclusion

Enfin, combiner Sequelize avec IronPDF dans une application Node.js offre une manière solide de créer des documents PDF à la volée en utilisant les informations extraites d'une base de données. Les développeurs peuvent se concentrer sur la logique de l'application plutôt que sur les complications de la base de données grâce à la couche ORM de Sequelize, qui abstrait la complexité des requêtes et des interactions SQL. Cela facilite la maintenance de la base de données.

Les développeurs peuvent rapidement modifier les données, interroger les enregistrements de base de données et obtenir des informations structurées en utilisant Sequelize. Cette intégration offre la possibilité de générer différents types de rapports, factures, relevés, et plus encore directement à partir des données de la base de données lorsqu'elle est combinée avec IronPDF, qui permet de rendre des informations HTML en documents PDF.

IronPDF peut garantir des solutions logicielles riches en fonctionnalités et haut de gamme pour les clients et les utilisateurs finaux en intégrant les technologies IronPDF et Iron Software dans votre pile de développement d'applications d'entreprise. Cette solide fondation facilitera également les projets, les systèmes backend et l'amélioration des processus. Licences de produitsont disponibles à partir de 749 $. La documentation riche, la communauté en ligne dynamique de développeurs et les mises à jour fréquentes de ces technologies en font un excellent choix pour les projets de développement logiciel contemporains.

< PRÉCÉDENT
NestJS Node.js (Comment ça fonctionne pour les développeurs)
SUIVANT >
hapi node js (Comment ça fonctionne pour les développeurs)

Prêt à commencer ? Version : 2024.11 vient de paraître

Installation gratuite de npm Voir les licences > ;