2024-09-21|閱讀時間 ‧ 約 22 分鐘

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

    ※ 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


    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.