跳過到頁腳內容
NODE 說明

Sequelize node js(開發者的使用方法)

Sequelize Node.js

在當今的 Web 開發領域,創建可擴展且可靠的應用程式需要強大的工具和程式庫來有效地處理前端和後端操作。 Sequelize 和 IronPDF 就是這樣兩個實用工具,它們結合起來可以為 Node.js 應用程式中的 PDF 生成和資料庫管理提供完整的解決方案。

Sequelize 是一個基於 Promise 的 Node.js 物件關聯映射 ( ORM ) 工具,它使使用 SQL 資料庫變得簡單。 JavaScript 對 SQL 方言(包括 PostgreSQL、MySQL、SQLite 和 Microsoft SQL Server (MSSQL))有廣泛的支持,開發人員可以使用 JavaScript 建立模型和關聯。 Sequelize 透過將 SQL 資料庫查詢抽象化為易於理解的語法來改善開發人員體驗,並透過模型驗證、預先載入和事務等功能簡化複雜的資料庫操作。

相反,IronPDF 是一個功能強大的 PDF 生成庫,可以輕鬆與 Node.js 應用程式互動。它允許程式設計師在 PDF 文件中新增、修改和刪除內容。 IronPDF 具有將 HTML 資訊轉換為 PDF 格式的卓越能力,是直接從線上應用程式(例如帳單和報告)產生基於文件的輸出的絕佳工具。

Sequelize Node.js 是什麼?

Sequelize for Node.js 是一個強大的物件關係映射 (ORM) 工具,它提供可靠的事務支持,確保對資料庫進行可靠且原子性的操作。 利用 Sequelize 模型,開發人員可以有效地定義資料結構並與之互動。 延遲載入等功能可以優化資料庫查詢,僅在需要時才取得相關資料。 Sequelize 物件關係映射器使用延遲載入簡化了資料庫交互,使得使用範例資料庫或生產系統變得非常簡單。 Sequelize 資料庫密碼憑證配置簡便,支援多種資料庫,包括 MySQL 資料庫,使其成為 Node.js 應用程式的多功能選擇。

Sequelize Node.js(開發者使用指南):圖 1 - Sequelize - 強大的事務支持

Sequelize Node.js 的特性

Sequelize 是一款廣受歡迎的 Node.js 物件關聯映射器 (ORM),它使處理關聯式資料庫和原始 SQL 查詢變得更加容易。 以下是其幾項突出特質:

Promises :與傳統的回呼不同,Sequelize 使用 Promises 進行非同步操作,從而產生更簡潔、更易讀的程式碼。

資料庫支援:它允許您從各種廣泛使用的關聯式資料庫中進行選擇,包括 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 專案中建立和配置 Sequelize 和 SQLite3:

安裝依賴項

將 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

從零開始。 使用 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

這段程式碼展示如何建立模型、如何將模型與資料庫同步、如何配置 Sequelize 與 SQLite3 以及如何執行基本的資料庫操作。

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是一種快速簡單的方法,可以處理任何類型的 HTML 文本,包括 CSS 和 JavaScript。

PDF 文件合併:為了簡化文件管理工作,可以將多個 PDF 文件合併為一個 PDF 文件。

文字和圖像提取:從 PDF 文件中提取文字和圖像,以便用於進一步的資料處理或分析。

浮水印:出於安全或品牌推廣的原因,您可以為 PDF 頁面添加文字或圖片浮水印。

新增頁首和頁尾:PDF 文件的頁首和頁尾可讓您新增自訂訊息或頁碼。

安裝 IronPDF

若要啟用 IronPDF 功能,請使用 node 套件管理器安裝必要的 Node.js 套件。

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

將 Sequelize 物件與 IronPDF Node.js 集成

在Node.js應用程式中將Sequelize與IronPDF集成,可以根據從資料庫接收的資料產生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 內容。 最後,使用 IronPDF 儲存 HTML 內容以建立文件,並將其渲染為 PDF 文件。

Sequelize Node.js(開發者使用指南):圖 4 - PDF 輸出

結論

最後,在 Node.js 應用程式中將 Sequelize 與 IronPDF 結合使用,可以有效地利用從資料庫中提取的資訊動態建立 PDF 文件。 借助 Sequelize 的 ORM 層,開發人員可以專注於應用程式邏輯,而無需關注資料庫的複雜性,因為該層抽象化了 SQL 查詢和互動的複雜性。 這樣可以簡化資料庫維護工作。

開發者可以利用 Sequelize 快速編輯資料、查詢資料庫記錄並取得結構化資訊。結合 IronPDF(可將 HTML 資訊渲染為 PDF 文件),此整合使得開發者能夠直接從資料庫資料產生各種類型的報表、發票、報表等。

IronPDF 透過將 IronPDF 和 Iron Software 技術整合到您的企業應用程式開發堆疊中,可以保證為客戶和最終用戶提供功能豐富、高階的軟體解決方案。 這一堅實的基礎也將使專案、後端系統和流程改進變得更加容易。 產品授權可從$799取得。 這些技術擁有豐富的文件、活躍的線上開發者社群以及頻繁的升級,使其成為當代軟體開發專案的絕佳選擇。

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。