節點幫助

Sequelize node js(對開發者如何運作)

發佈 2024年9月29日
分享:

Sequelize Node.JS

介紹

在當代網路開發的世界中,創建可擴展且可靠的應用程式需要強大的工具和函式庫,以有效地處理前端和後端操作。 有兩個這樣的工具是Sequelize和IronPDF,結合使用時可為Node.js應用程式提供完整的PDF生成和資料庫管理解決方案。

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

相反,IronPDF 是一個強大的庫,用於生成 PDF 並能夠輕鬆與 Node.js 應用程式互動。它使程式設計師能夠添加、修改和刪除 PDF 文件中的內容。 IronPDF 具有將 HTML 資訊轉換成 PDF 格式的卓越能力,是從線上應用程式中直接生成文件型輸出的優秀工具,例如帳單和報告。

什麼是 Sequelize Node.js?

Sequelize 適用於Node.js的是一個強大的物件關係映射工具 (ORM) 提供穩定的交易支持,確保對資料庫進行可靠且原子性操作。 利用 Sequelize 模型,開發者可以高效地定義和操作其數據結構。 像延遲加載這樣的功能允許優化的資料庫查詢,僅在需要時提取相關數據。 Sequelize 物件關聯映射器透過延遲加載簡化了資料庫的互動,使操作範例資料庫或生產系統變得簡單明瞭。 通過簡單配置資料庫密碼憑證,Sequelize 支援各種資料庫,包括 MySQL 資料庫,使其成為 Node.js 應用程式的多功能選擇。

Sequelize node js(對開發人員的運作方式):圖 1 - Sequelize- 強大的交易支持

Sequelize Node.js 的功能

受歡迎的物件關聯對應器 (ORM) 名為 Sequelize 的 Node.js 庫使使用關聯數據庫和原始 SQL 查詢變得更簡單。 以下是其幾個顯著的特點:

Promises:與傳統的回呼不同,Sequelize 使用 Promises 進行非同步操作,這使得代碼更清晰、更易於閱讀。

資料庫支援: 它允許您選擇多種廣泛使用的關聯式資料庫,包括 PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Server 等。

模型定義: 使用 JavaScript 物件,Sequelize 允許您定義對應到資料庫表的模型。 因此,撰寫原生 SQL 的必要性降低,數據建模變得更簡單。

關聯:Sequelize 在管理資料表關係方面相當出色。 您可以指定模型之間的關係,例如一對多、多對多和一對一,Sequelize會在後台處理複雜的SQL查詢。

交易:在進行多個數據庫操作時,Sequelize 的強大交易支持可保證數據一致性。

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

遷移:Sequelize 提供了一個有效的遷移系統,使您可以隨時間處理資料庫結構的變更。保持資料庫結構與應用程式代碼的一致性是至關重要的。

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

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

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

Scopes:通過為模型查詢定義可重用的篩選器,作用域幫助您更好地管理複雜數據的檢索。

這只是 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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install sequelize npm install sqlite3 npm install sequelize-cli
VB   C#

初始化 Sequelize

從頭開始。 使用 CLI 配置 Sequelize 來設置專案結構和配置檔案。

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

上面的命令會為您的 Sequelize 專案創建所需的目錄和檔案。

配置資料庫

要設置數據庫連接,請編輯config.json文件。您的SQLite3配置可能如下所示:

{
  "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#

為測試、產品及開發環境指定不同的 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
'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#

此命令會在遷移目錄中創建遷移檔案和模型檔案 (user.js) 在模型目錄中。

運行遷移

要在 SQLite 資料庫中建立表格,請執行遷移。

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#

在應用程式中使用 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);
  }
})();
' 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#

此代碼展示了如何構建模型,將其與資料庫同步,使用 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 套件管理器安裝必要的 Node.js 套件。

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

將 Sequelize 對象與 IronPDF Node.js 集成

在 Node.js 應用中將 Sequelize 與 IronPDF 整合,可根據從資料庫接收到的數據生成 PDF 文件。 以下是一些展示如何實現此功能的代碼範例。

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#

應通過創建實例並在位置中傳遞 SQLite 數據庫文件來初始化 Sequelize。通過定義 firstName、lastName 和 email 屬性來創建一個 User 模型。

模型和資料庫同步:將模型與資料庫對齊。 在這種情況下,已存在的表格會使用 force: true 選項被刪除並重新創建。

種子資料庫:您可以使用 bulkCreate() 選擇性地以一些初始數據來填充資料庫。

要檢索用戶數據,請查詢資料庫中的用戶模型並生成 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 可以為客戶和最終用戶提供功能豐富的高端軟體解決方案。 這個堅實的基礎也將使項目、後端系統和流程改進變得更容易。 每個 IronSoftware 可供選擇的價格為 $749。這些技術擁有豐富的文件資料、充滿活力的線上開發者社群以及頻繁的升級,這使它們成為現代軟體開發專案的理想選擇。

< 上一頁
NestJS Node.js(開發人員如何運作)
下一個 >
hapi node js(對開發者的運作方式)

準備開始了嗎? 版本: 2024.9 剛剛發布

免費 npm 安裝 查看許可證 >