※ Express串接MySQL相關套件介紹
★ Express 資料庫設定套件,mysqljs和 mysql2比較
相同點:都是讓 Node.js 能使用 MySQL 的套件 (package)。安裝之後我們就能在 Node.js application 裡使用 SQL 指令,操作 SQL 資料庫。
mysqljs:
(通常稱為 mysql
)
- API:提供基本的回調函數 API。
- 性能:性能較好,但不如
mysql2
。 - 功能:支持基本的 MySQL 功能,包括:
- 建立連接:可以輕鬆地連接到 MySQL 伺服器。
- 執行查詢:可以執行 SQL 查詢,並獲取結果。
- 處理錯誤:提供錯誤處理機制。
- 連接池:用於管理和重用與資料庫的連接,以提高應用程式的效能和資源利用率。
- 事務處理:事務是一組不可分割的操作,用於確保資料庫操作的一致性和可靠性。
npm install mysql
mysql2:
- API:除了回調函數 API 外,還提供了 Promise API,這使得處理異步操作更加方便。
- 性能:性能更優,因為它是用純 JavaScript 實現的,並且進行了多種優化。
- 功能:支持預處理語句(prepared statements),這有助於防止 SQL 注入攻擊。還支持非 UTF-8 編碼、二進制日誌協議、壓縮和 SSL 等更多功能。
npm install mysql2
★ 創建連接的connection和createPool比較
connection
和createPool
是Node.js中用來連接MySQL資料庫的兩種不同方法。
主要區別如下:
- 單一連接 vs 連接池:
- connection:使用createConnection方法來建立一個單一的MySQL連接。每次呼叫createConnection都會建立一個新的連接對象,並且只能由一個客戶端使用。當連接不再需要時,需要手動呼叫end方法來關閉連接。
- createPool:使用createPool方法來建立一個連接池,連接池中包含多個可重用的連接。連接池允許多個客戶端同時使用連接,提高了並發性能。連接池會自動管理連接的分配和釋放,可以避免頻繁地建立和銷毀連接。
- 適用場景:
- connection:適用於簡單的、低並發的應用場景,需要手動管理連接的建立和關閉。
- createPool:適用於高並發的應用場景,連接池自動管理連接的分配和釋放,提高了並發性能。
- 性能:
- connection:每次執行查詢都會建立一個新的連接,這會造成資源的浪費,降低性能。
- createPool:連接池一次性建立多個連接,根據客戶端的查詢自動分發、重用和管理這些連接,從而提高性能。
★ 五大API串接MySQL基本架構
app.post('/', (req, res) => {
})
app.get('/', (req, res) => {
})
app.get('/:id', (req, res) => {
})
app.put('/:id', (req, res) => {
})
app.delete('/:id', (req, res) => {
})
★ 測試API工具 – REST Client 和 Postman 的比較
Postman
- 圖形化介面:Postman 提供一個直觀的圖形化介面,方便用戶操作和管理 API 請求。
- 功能豐富:支持 API 測試、自動化測試、API 文件生成等多種功能。
- 資源消耗:Postman 需要額外的軟體安裝,並且運行時會佔用較多的 RAM。
- 付費功能:一些高級功能需要付費才能使用。
REST Client
- VS Code 擴展:REST Client 是一個 VS Code 的擴展插件,允許你在 VS Code 中直接發送 HTTP 請求並查看響應結果。
- 輕量化:由於它是基於文本格式,所以資源消耗較少,適合 RAM 緊缺的設備。
- 版本控制:可以輕鬆地在存儲庫之間進行版本控制,並且可以在團隊間共享 API 調用。
- 無圖形介面: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