JS:資料庫設計與應用(七)

更新於 2024/09/21閱讀時間約 1 分鐘

※ Express串接MySQL相關套件介紹

★ Express 資料庫設定套件,mysqljs和 mysql2比較

相同點:都是讓 Node.js 能使用 MySQL 的套件 (package)。安裝之後我們就能在 Node.js application 裡使用 SQL 指令,操作 SQL 資料庫。

mysqljs:(通常稱為 mysql

  • API:提供基本的回調函數 API。
  • 性能:性能較好,但不如 mysql2
  • 功能支持基本的 MySQL 功能,包括:
  1. 建立連接:可以輕鬆地連接到 MySQL 伺服器。
  2. 執行查詢:可以執行 SQL 查詢,並獲取結果。
  3. 處理錯誤:提供錯誤處理機制。
  4. 連接池:用於管理和重用與資料庫的連接,以提高應用程式的效能和資源利用率。
  5. 事務處理:事務是一組不可分割的操作,用於確保資料庫操作的一致性和可靠性。
npm install mysql
raw-image


mysql2:

  • API:除了回調函數 API 外,還提供了 Promise API,這使得處理異步操作更加方便。
  • 性能:性能更優,因為它是用純 JavaScript 實現的,並且進行了多種優化。
  • 功能:支持預處理語句(prepared statements),這有助於防止 SQL 注入攻擊。還支持非 UTF-8 編碼、二進制日誌協議、壓縮和 SSL 等更多功能。
npm install mysql2


★ 創建連接的connection和createPool比較

connectioncreatePool是Node.js中用來連接MySQL資料庫的兩種不同方法

主要區別如下:

  1. 單一連接 vs 連接池
    • connection:使用createConnection方法來建立一個單一的MySQL連接。每次呼叫createConnection都會建立一個新的連接對象,並且只能由一個客戶端使用。當連接不再需要時,需要手動呼叫end方法來關閉連接。
    • createPool:使用createPool方法來建立一個連接池,連接池中包含多個可重用的連接。連接池允許多個客戶端同時使用連接,提高了並發性能。連接池會自動管理連接的分配和釋放,可以避免頻繁地建立和銷毀連接。
  2. 適用場景
    • connection:適用於簡單的、低並發的應用場景,需要手動管理連接的建立和關閉。
    • createPool:適用於高並發的應用場景,連接池自動管理連接的分配和釋放,提高了並發性能。
  3. 性能
    • connection:每次執行查詢都會建立一個新的連接,這會造成資源的浪費,降低性能。
    • createPool:連接池一次性建立多個連接,根據客戶端的查詢自動分發、重用和管理這些連接,從而提高性能。

★ 五大API串接MySQL基本架構

//新增一個todo
app.post('/', (req, res) => {

})

//取得所有的todo
app.get('/', (req, res) => {

})

//取得某一個todo
app.get('/:id', (req, res) => {

})

//更新某一個todo
app.put('/:id', (req, res) => {

})

//刪除某一個todo
app.delete('/:id', (req, res) => {

})


★ 測試API工具 – REST Client 和 Postman 的比較

Postman

  1. 圖形化介面Postman 提供一個直觀的圖形化介面,方便用戶操作和管理 API 請求。
  2. 功能豐富:支持 API 測試、自動化測試、API 文件生成等多種功能。
  3. 資源消耗:Postman 需要額外的軟體安裝,並且運行時會佔用較多的 RAM。
  4. 付費功能:一些高級功能需要付費才能使用。

REST Client

  1. VS Code 擴展:REST Client 是一個 VS Code 的擴展插件,允許你在 VS Code 中直接發送 HTTP 請求並查看響應結果。
  2. 輕量化:由於它是基於文本格式,所以資源消耗較少,適合 RAM 緊缺的設備。
  3. 版本控制:可以輕鬆地在存儲庫之間進行版本控制,並且可以在團隊間共享 API 調用。
  4. 無圖形介面:REST Client 沒有圖形化介面,所有操作都在 HTTP 文件中進行。

總結

  • 如果你需要一個功能豐富且易於操作的工具,Postman 可能更適合你。
  • 如果你已經在使用 VS Code 並且希望節省資源,REST Client 會是一個不錯的選擇。

★ SQL 資料庫互動工具 – Sequelize和 Sequelize CLI

Sequelize:

基於 Node.js 的 ORM(Object-Relational Mapping)庫,用於與 SQL 資料庫進行互動。

提供了一系列事先設定好的任務腳本,包括自動產生設定檔、載入種子資料、資料庫設定等等。

  • 模型定義可以使用 JavaScript 來定義資料庫中的表格和欄位。
  • 查詢生成:提供簡單的 API 來生成和執行 SQL 查詢。
  • 關聯管理:支援定義表格之間的關聯(如一對一、一對多、多對多)。
  • 資料驗證:內建資料驗證功能,確保資料的完整性。
  • 交易管理:支援資料庫交易,確保資料操作的原子性。
npm install sequelize

Sequelize CLI

Sequelize CLI  是一個命令行工具,專門用來輔助 Sequelize 的開發工作。它提供了一系列事先設定好的任務腳本,這些腳本可以幫助你自動產生設定檔、載入種子資料、進行資料庫設定等等。

  • 初始化專案快速建立 Sequelize 專案結構。
  • 生成模型:自動生成模型檔案。
  • 遷移管理:生成和執行資料庫遷移。
  • 種子資料:生成和執行種子檔案來填充測試資料。
npm install --save-dev sequelize-cli


    全端網頁開發專業知識分享
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ※ 設定首頁路由兩種寫法: ● res.send() // 設定首頁路由 app.get('/', (req, res) => { res.send('hello world') }) 說明: 功能:res.send() 用於發送 HTTP 回應消息。它可以發送字符串、Buffer、對
    ※ Schema Design 小測驗 ● 測驗一:電商平台是後端開發最基本的例子 幫電商平台設計一個SQL Database Schema,需要保存商品資料、顧客資料、訂單資料… 輔助設計Schema的工具: https://drawsql.app 優點: 網頁版,方便使用。 功能
    ※ Schema 設計 ● 什麼是Schema? Schema 是用來描述資料庫內的表格結構、欄位格式以及表格之間的關聯。它定義了資料庫的邏輯結構,確保資料的組織和存取方式一致。 思考點:資料以什麼「形式」保存在資料庫? 資料在資料庫中以多種形式保存,主要包括以下幾種: 表格 (Table
    ※ 安裝 MySQL server 官網下載(Windows 版本) MySQL Installer  的官方下載頁:https://dev.mysql.com/downloads/installer/ MySQL Installer 是一個方便的工具,可以幫助你一次性安裝多個 MySQL 產
    ※ 資料庫的運作方式 *SQL和SQL Database的區別: SQL是一種Query Language(查詢語言) ,是一種用來幫助我們跟資料庫溝通的一種語言,用於管理和操作關係型資料庫。它不是一種資料庫類型,而是一種用來與資料庫溝通的語言。 SQL Database是指使用SQL語言來管
    ※ SQL基本介紹 SQL(結構化查詢語言)是一種查詢語言(Query Language),用於對資料庫中的資料進行操作。透過SQL,我們可以執行以下操作: 查詢資料 更新資料 刪除資料 ※ SQL四個基本概念 Table(表格):資料庫中的資料是以表格的形式儲存的。每個表格包含多個欄
    ※ 設定首頁路由兩種寫法: ● res.send() // 設定首頁路由 app.get('/', (req, res) => { res.send('hello world') }) 說明: 功能:res.send() 用於發送 HTTP 回應消息。它可以發送字符串、Buffer、對
    ※ Schema Design 小測驗 ● 測驗一:電商平台是後端開發最基本的例子 幫電商平台設計一個SQL Database Schema,需要保存商品資料、顧客資料、訂單資料… 輔助設計Schema的工具: https://drawsql.app 優點: 網頁版,方便使用。 功能
    ※ Schema 設計 ● 什麼是Schema? Schema 是用來描述資料庫內的表格結構、欄位格式以及表格之間的關聯。它定義了資料庫的邏輯結構,確保資料的組織和存取方式一致。 思考點:資料以什麼「形式」保存在資料庫? 資料在資料庫中以多種形式保存,主要包括以下幾種: 表格 (Table
    ※ 安裝 MySQL server 官網下載(Windows 版本) MySQL Installer  的官方下載頁:https://dev.mysql.com/downloads/installer/ MySQL Installer 是一個方便的工具,可以幫助你一次性安裝多個 MySQL 產
    ※ 資料庫的運作方式 *SQL和SQL Database的區別: SQL是一種Query Language(查詢語言) ,是一種用來幫助我們跟資料庫溝通的一種語言,用於管理和操作關係型資料庫。它不是一種資料庫類型,而是一種用來與資料庫溝通的語言。 SQL Database是指使用SQL語言來管
    ※ SQL基本介紹 SQL(結構化查詢語言)是一種查詢語言(Query Language),用於對資料庫中的資料進行操作。透過SQL,我們可以執行以下操作: 查詢資料 更新資料 刪除資料 ※ SQL四個基本概念 Table(表格):資料庫中的資料是以表格的形式儲存的。每個表格包含多個欄
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    ※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
    ※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
    Thumbnail
    Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
    Thumbnail
    在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
    Thumbnail
    本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
    Thumbnail
    套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
    Thumbnail
    因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
    ※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    ※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
    ※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
    Thumbnail
    Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
    Thumbnail
    在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
    Thumbnail
    本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
    Thumbnail
    套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
    Thumbnail
    因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
    ※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為