フッターコンテンツにスキップ
ノードヘルプ

Sequelize node js (開発者向けのしくみ)

Sequelize Node.JS

現代のウェブ開発の世界では、スケーラブルで信頼性のあるアプリを作成するには、フロントエンドとバックエンドの操作を効果的に処理できる強力なツールとライブラリが必要です。 Sequelize と IronPDF はそのような 2 つのユーティリティであり、組み合わせて使用​​することで、Node.js アプリケーションでの PDF 作成とデータベース管理のための完全なソリューションを提供します。

Sequelize は、Node.js のための Promise ベースのオブジェクト関係マッピング (ORM) であり、SQL データベースとの作業を簡単にします。 PostgreSQL、MySQL、SQLite、Microsoft SQL Server (MSSQL) などの SQL 方言を広くサポートしており、開発者は JavaScript を使用してモデルやリレーションを構築できます。 Sequelize は、SQL データベース クエリを理解しやすい構文に抽象化し、モデル検証、イーガーロード、トランザクションなどの機能を使用して複雑なデータベース操作を効率化することで、開発者エクスペリエンスを向上させます。

一方、IronPDF は、Node.js アプリと簡単に連携できる強力な PDF 生成ライブラリです。プログラマーが PDF ドキュメントの内容を追加、修正、削除できるようにします。 HTML 情報を PDF 形式に変換する優れた機能を備えた IronPDF は、オンライン アプリケーションからの請求書やレポートなど、ドキュメント ベースの出力を直接生成するための優れたツールです。

Sequelize Node.js とは?

Node.js 用 Sequelize は、データベース上での信頼性の高い一貫した操作を保証する、堅実なトランザクション サポートを提供する強力なオブジェクト リレーション マッピング (ORM) です。 Sequelize モデルを利用することで、開発者はデータ構造を効率的に定義して対話することができます。 遅延ロードなどの機能により、最適化されたデータベース クエリが可能になり、関連データは必要な場合にのみ取得されます。 Sequelize オブジェクト リレーショナル マッパーは、遅延ロードを使用してデータベースのインタラクションを簡素化し、サンプル データベースまたは本番システムを簡単に操作できるようにします。 データベース パスワードの資格情報を簡単に設定できるため、Sequelize は MySQL データベースを含むさまざまなデータベースをサポートし、Node.js アプリケーションにとって多用途な選択肢となります。

Sequelize node js (開発者向けの動作方法): 図 1 - Sequelize - 堅実なトランザクションサポート

Sequelize Node.js の機能

Sequelize と呼ばれる Node.js 向けの人気のあるオブジェクトリレーショナルマッパー (ORM) により、リレーショナルデータベースと生の SQL クエリの操作が簡単になります。 ここにその顕著な属性のいくつかがあります。

プロミス: 従来のコールバックとは異なり、Sequelize は非同期操作にプロミスを採用しており、これによりコードが読みやすく、簡潔になります。

データベース サポート: PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Server など、広く使用されているリレーショナルデータベースをさまざまに選択できます。

モデル定義: Sequelize を使用すると、JavaScript オブジェクトを使用してデータベース テーブルにマップされるモデルを定義できます。 その結果、生の SQL を書く必要性が減り、データ モデリングが簡素化されます。

関連付け: Sequelize はテーブル関係の管理が非常に得意です。 一対多、多対多、一対一など、モデル間のリレーションシップを指定すると、Sequelize がバックグラウンドで複雑な SQL クエリを処理します。

トランザクション: 複数のデータベース操作を実行する際、Sequelize の強力なトランザクション サポートにより、データの整合性が保証されます。

データ同期: モデルとデータベース構造を Sequelize で自動的に同期できます。モデルの定義に基づいてテーブルを作成または更新する際に役立ちます。

マイグレーション: Sequelize には効果的な移行システムが用意されており、データベース構造の変更を時間の経過にわたって処理できます。データベース構造とアプリケーション コードの整合性を保つことが不可欠です。

バリデーション: データがデータベースに保存される前に、モデルの整合性を保証するためにバリデーション ルールを確立できます。

生のクエリ: Sequelize は抽象化レイヤーの使用を推奨しますが、特定のワークロードに必要な場合は、生の SQL クエリを実行するために使用することもできます。

シード: テストまたは開発目的で、Sequelize を使用すると、データベースにいくつかのスターティング データをシードすることができます。

スコープ: モデルクエリに再利用可能なフィルターを定義することにより、スコープは複雑なデータの取得をより適切に管理するのに役立ちます。

これらは Sequelize の多くの機能の一部に過ぎません。 その包括的な機能により、リレーショナルデータベースを扱う Node.js 開発者にとって非常に貴重なツールです。

Sequelize Node.js を作成して設定する

これらの手順を使用して、Node.js プロジェクトで SQLite3 と Sequelize を作成および構成できます。

依存関係のインストール

プロジェクトの依存関係として Sequelize CLI (コマンド ライン インターフェイス)、SQLite3、および Sequelize をインストールします。

npm install sequelize
npm install sqlite3
npm install sequelize-cli
npm install sequelize
npm install sqlite3
npm install sequelize-cli
SHELL

Sequelize を初期化

最初から始めましょう。 CLI を使用してプロジェクト構造と設定ファイルをセットアップします。

npx sequelize-cli init
npx sequelize-cli init
SHELL

上記のコマンドにより、Sequelize プロジェクトに必要なディレクトリとファイルが作成されます。

データベースを構成する

config.json ファイルを編集してデータベース接続を設定します。SQLite3 構成は次のようになります。

{
  "development": {
    "dialect": "sqlite",
    "storage": "./database/development.sqlite"
  },
  "test": {
    "dialect": "sqlite",
    "storage": ":memory:"
  },
  "production": {
    "dialect": "sqlite",
    "storage": "./database/production.sqlite"
  }
}

この構成では、テスト環境、本番環境、開発環境に対して異なる SQLite データベースを指定しています。

モデルを作成する

CLI を使用して Sequelize モデルのファイルを作成します。 例として、ユーザー モデルを開発するには:

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
SHELL

このコマンドにより、migrationsフォルダーに移行ファイルが、modelsフォルダーにモデルファイル (user.js) が作成されます。

マイグレーションを実行する

SQLite データベースにテーブルを構築するには、移行を実行します。

npx sequelize-cli db:migrate
npx sequelize-cli db:migrate
SHELL

アプリケーションで Sequelize を使用する

Sequelize を使用して、Node.js アプリケーションで SQLite データベースとインターフェースすることができます。 これは、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);
  }
})();
JAVASCRIPT

このコードは、モデルを構築し、データベースと同期し、SQLite3 を使用して Sequelize を構成し、基本的なデータベース操作を実行する方法を示しています。

Sequelize node js (開発者向けの動作方法): 図 2 - Sequelize アプリケーション出力

開始方法

最初に、IronPDF と Sequelize Node.js JS を使用して動的に生成されたユーザーまたは学生データを備えた PDF ドキュメントを作成する例のアプリケーションを構築します。 これは、包括的なステップバイステップの指導マニュアルです。

IronPDFとは何ですか?

IronPDF は、PDF ファイルの作成、編集、管理を簡素化するように設計されたアプリケーション ライブラリのセットです。 このツールを使用すると、開発者は HTML ドキュメントからテキストや画像を抽出したり、ヘッダーや透かしを追加したり、複数の PDF ドキュメントをマージしたり、さまざまなアクティビティを行ったりできます。 IronPDF の包括的なドキュメントと直感的な API により、開発者は高品質の PDF ドキュメントを自動的に生成することが容易になります。 IronPDFには、ドキュメントのワークフローを改善し、ドキュメント作成、レポート、請求書など、さまざまなシナリオで優れたユーザー体験を提供するために必要なすべての機能と機能が含まれています。

Sequelize node js (開発者向けの動作方法): 図 3 - IronPDF

IronPDFの機能

HTML から PDF への変換 は、CSS や JavaScript を含むあらゆる種類の HTML テキストを処理できる迅速で簡単な方法です。

PDF ファイルのマージ: 複数の PDF ドキュメントを 1 つの PDF ファイルに結合して、ドキュメント管理の負担を軽減します。

テキストと画像の抽出: データ処理や分析に使用するために、PDFファイルからテキストと画像を抽出します。

ウォーターマーク: セキュリティやブランディングのために、テキストや画像のウォーターマークをPDFページに追加できます。

ヘッダーとフッターの挿入: PDF ドキュメントのヘッダーとフッターには、カスタマイズされたメッセージやページ番号を含めることができます。

IronPDFのインストール

IronPDF機能を有効にするために、Node.jsパッケージマネージャを使用して必要なパッケージをインストールします。

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

Sequelize オブジェクトを IronPDF Node.js と統合する

Node.js アプリケーションで IronPDF を使用して Sequelize を統合すると、データベースから取得したデータに基づいて PDF ドキュメントを生成することができます。 これを達成する方法を示すコードの例を次に示します。

const { Sequelize, DataTypes } = require('sequelize');
const IronPdf = require("@ironsoftware/ironpdf");
const { PdfDocument } = IronPdf; // Use destructuring to import specific components

// 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 from HTML content
    PdfDocument.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 { PdfDocument } = IronPdf; // Use destructuring to import specific components

// 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 from HTML content
    PdfDocument.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);
  });
JAVASCRIPT
  • Sequelize の初期化: SQLite データベース ファイルの場所を渡してインスタンスを作成することで Sequelize を初期化する必要があります。
  • モデル定義: firstNamelastNameemail プロパティを定義して User モデルを作成します。
  • モデルとデータベースの同期: モデルをデータベースと一致させます。 この場合、テーブルは force: true オプションを使用して既存のものが削除されて再作成されます。
  • データベースのシード: bulkCreate() を使用していくつかの初期データでデータベースをシードすることができます。
  • データベースをクエリして PDF を生成する: データベース内のユーザー モデルをクエリしてユーザー データを取得し、PDF を生成する。 次に、ユーザー リストを例として使用する HTML コンテンツを書きます。 最後に、HTML コンテンツを保存して IronPDF を使用してファイルを作成し、PDF ドキュメントとしてレンダリングします。

Sequelize node js (開発者向けの動作方法): 図 4 - PDF 出力

結論

最後に、Node.js アプリケーションで Sequelize を IronPDF と組み合わせることで、データベースから取得した情報を使用してオンザフライで PDF ドキュメントを作成する強力な方法を提供します。 Sequelize の ORM レイヤーにより、SQL クエリやインタラクションの複雑さが抽象化されているため、開発者はデータベースの相互作用よりもアプリケーション ロジックに集中できます。 これにより、データベースの管理が容易になります。

Sequelize を活用することにより、開発者はすぐにデータを編集したり、データベース レコードをクエリしたり、構造化された情報を取得したりすることができます。この統合により、HTML 情報を PDF ドキュメントにレンダリングできる IronPDF と組み合わせることで、データベース データからさまざまな種類のレポート、請求書、ステートメントなどを直接生成する機会が開かれます。

IronPDF と Iron Software のテクノロジーをエンタープライズ アプリケーション開発スタックに統合することで、クライアントやエンド ユーザーに機能豊富で高エンドなソフトウェアソリューションを保証できます。 この強力な基盤により、プロジェクト、バックエンド システム、プロセスの改善も容易になります。 製品ライセンス は $799 から入手できます。 これらのテクノロジーの豊富なドキュメント、活気のあるオンライン開発者コミュニティ、頻繁なアップグレードにより、現代のソフトウェア開発プロジェクトに最適な選択肢となっています。

Darrius Serrant
フルスタックソフトウェアエンジニア(WebOps)

Darrius Serrantは、マイアミ大学でコンピュータサイエンスの学士号を取得し、Iron SoftwareでフルスタックWebOpsマーケティングエンジニアとして働いています。若い頃からコーディングに惹かれ、コンピューティングを神秘的かつアクセス可能なものとし、創造性と問題解決のための完璧な媒体と考えていました。

Iron Softwareでは、新しいものを創造することと、複雑なコンセプトをより理解しやすくすることを楽しんでいます。Resident Developerの一人として、次世代に専門知識を共有するために、学生を教えることにも志願しました。

Darriusにとって、その仕事は価値があり、実際の影響があるため、満足感があります。