跳過到頁腳內容
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文件中的內容。 憑藉其將HTML資訊轉換為PDF格式的卓越能力,IronPDF是一個直接從線上應用程式生成基於文件輸出的優秀工具,例如賬單和報告。

什麼是Sequelize Node.js?

Sequelize for Node.js 是一個強大的物件關係映射 (ORM),提供穩定的交易支援,確保在資料庫上可靠和原子性的操作。 利用Sequelize模型,開發者可以高效地定義和交互其資料結構。 像懶載入這樣的特性允許優化資料庫查詢,僅在需要時獲取相關數據。 Sequelize物件關係映射器使用懶載入使資料庫交互變得簡單,讓使用樣本資料庫或生產系統變得直截了當。 通過對資料庫密碼憑證的簡單配置,Sequelize支援多種資料庫,包括MySQL資料庫,這使得它成為Node.js應用程式的多用途選擇。

Sequelize node js (開發者的工作方式):圖1 - Sequelize- 穩定的交易支援

Sequelize Node.js的功能

一個受歡迎的Node.js物件關係映射器(ORM)叫做Sequelize,使處理關聯資料庫和原始SQL查詢變得更容易。 這裡是其一些重要特徵:

Promises: 與傳統回調不同的是,Sequelize使用Promises進行異步操作,這導致更簡潔且易讀的代碼。

資料庫支援: 它允許您從多種熱門的關聯資料庫中選擇,包括PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Server等。

模型定義: 使用JavaScript物件,Sequelize允許您定義映射到資料庫表的模型。 因此,撰寫原始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模型的文件。 舉個例子,開發一個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的轉換是一種快速簡單的方法,可以處理任何類型的HTML文本,包括CSS和JavaScript。

PDF文件合併:爲便於文件管理任務,將多個PDF文件合併成一個PDF文件。

文本和圖像提取: 從 PDF 文件中提取文本和圖像,以便進一步進行數據處理或分析。

水印: 出於安全或品牌化的目的,您可以在 PDF 頁面上添加文本或圖片水印。

包含標頭和頁腳:PDF文件的標頭和頁腳允許您包括自定義消息或頁碼。

安裝 IronPDF

要啟用 IronPDF 功能,請使用節點包管理器安裝必要的 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。
  • 模型定義:定義 firstName, lastNameemail 屬性來創建一個用戶模型。
  • 模型和資料庫同步化:將模型與資料庫對齊。在這種情況下,使用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軟體技術整合到您的企業應用程式開發堆疊中,IronPDF能為客戶和最終用戶提供功能豐富的高端軟體解決方案。

這穩固的基礎還將使專案、後端系統和流程改進更加容易。 產品授權可從$799獲得。 這些技術的豐富文檔、活躍的在線開發者社群和頻繁的更新,使其成為現代軟體開發專案的理想選擇。 The rich documentation, vibrant online developer community, and frequent upgrades of these technologies make them a great choice for contemporary software development projects.

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

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

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

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