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

更新於 發佈於 閱讀時間約 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
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
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
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
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)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為