跳至頁尾內容
NODE 說明

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

Sequelize Node.JS

在當代的網頁開發中,建立可擴展和可靠的應用需要強大的工具和程式庫來有效處理前端和後端操作。 像Sequelize和IronPDF這樣的工具相結合,為Node.js應用提供了生成PDF和資料庫管理的完整解決方案。

Sequelize是一種基於Promise的物件關係映射 (ORM),使得在Node.js中使用SQL資料庫變得輕鬆。 由於對SQL方言的廣泛支援,包括PostgreSQL、MySQL、SQLite和Microsoft SQL Server (MSSQL),開發者可以使用JavaScript構建模型和關係。 Sequelize通過將SQL資料庫查詢抽象成可理解的語法來改善開發者體驗,並通過提供模型驗證、急載入和交易等功能來簡化複雜的資料庫操作。

反過來,IronPDF是一個強大的程式庫,可以生成與Node.js應用輕鬆互動的PDF。它使程式員能夠新增、修改和刪除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的物件關係映射器 (ORM) 為Node.js使得處理關係型資料庫和原始SQL查詢變得更簡單。 以下是其一些突出的特點:

Promises: 與傳統的回調不同,Sequelize使用Promises來處理非同步操作,這導致更簡潔、更易讀的程式碼。

Database Support: 它允許您從多種廣泛使用的關係型資料庫中選擇,包括PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Server等。

Model Definition: 使用JavaScript物件,Sequelize使您能夠定義映射到資料庫表的模型。 因此,寫原始SQL變得不那麼必要,資料建模變得更簡單。

Associations: Sequelize在管理表關係方面表現得非常出色。 您可以指定模型之間的關係,如一對多、多對多、一對一,Sequelize將在背景中處理複雜的SQL查詢。

Transactions: 執行多個資料庫操作時,Sequelize的強大交易支援保證資料一致性。

Data Synchronization: 您的模型和資料庫結構可以自動與Sequelize同步。根據您的模型定義建立或更新表時,這可能會很有用。

Migrations: Sequelize提供了有效的遷移系統,使您可以隨時間處理資料庫結構的變化。維持資料庫結構與應用程式碼的對齊是必不可少的。

Validations: 在資料儲存到資料庫之前,您可以為模型建立驗證規則以保證資料完整性。

Raw Queries: 雖然Sequelize鼓勵使用其抽象層,但您也可以在需要特定工作負載時運行原始SQL查詢。

Seeding: 出於測試或開發目的,Sequelize提供了一種用初始資料填充資料庫的方法。

Scopes: 通過為您的模型查詢定義可重複使用的過濾器,範圍幫助您更好地管理複雜資料的檢索。

這些只是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模型的文件。 作為例證,要開發一個User模型:

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文件合併成一個PDF文件。

文字和圖片提取: 從PDF文件中取出文字和圖片,供進一步的資料處理或分析使用。

水印: 出於安全或品牌考量,可以在PDF頁面上新增文字或圖片水印。

新增頁眉和頁腳:PDF文件的頁眉和頁腳允許您插入自定義資訊或頁碼。

安裝IronPDF

使用節點套件管理器安裝必要的Node.js套件以啟用IronPDF功能。

 npm i @ironsoftware/ironpdf

整合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。
  • 模型定義:通過定義其email屬性來建立一個User模型。
  • 模型和資料庫同步:使模型與資料庫對齊。 在這種情況下,現有的表將使用force: true選項被刪除並重新建立。
  • 資料庫填充:您可以使用bulkCreate()選擇性地用一些初始資料填充資料庫。
  • 查詢資料庫並生成PDF:查詢資料庫中的使用者模型來檢索使用者資料並生成PDF。 接下來,撰寫使用使用者列表作為範例的HTML內容。 最後,保存HTML內容以使用IronPDF建立文件並將其呈現為PDF文件。

Sequelize Node.js (開發者的工作原理):圖4 - PDF輸出

結論

最後,在Node.js應用中結合Sequelize和IronPDF提供了一種強大方式,可以使用從資料庫提取的資訊即時建立PDF文件。 開發者可以專注於應用邏輯而不是資料庫的複雜性,因為Sequelize的ORM層抽象了SQL查詢和交互的複雜性。 這使資料庫維護變得更簡單。

通過利用Sequelize,開發者可以快速編輯資料、查詢資料庫記錄以及獲取結構化資訊。這種整合開啟了從資料庫資料中直接生成各種報告、發票、對賬單等的機會,因為IronPDF允許HTML資訊被渲染成PDF文件。

通過將IronPDF和Iron Software技術整合到您的企業應用開發堆棧中,IronPDF可以為客戶和最終使用者保證功能豐富的高端軟體解決方案。 這個強大的基礎還將使項目、後端系統和流程改進更加輕鬆。 產品授權可從$999處獲得。 這些技術的豐富文件、生氣蓬勃的在線開發者社群和頻繁的升級使其成為現代軟體開發項目的最佳選擇。

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

在Iron Software,Darrius喜歡創造新事物並簡化複雜的概念,使其更易於理解。作為我們的常駐開發人員之一,他還志願教學,將他的專業知識傳授給下一代。

對Darrius來說,他的工作是有意義的,因為它有價值且對社會有真正的影響。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話