這是在講關於一名叫 Koa 的全端勇士傳說-MySQL篇-sequelize(1)
前言
接下來將會使用 sequelize 這個套件,sequelize 它是一個 ORM,ORM 可以幫助我們解決一些問題,例如 SQL injection 的問題
ORM
想必一定會有人問 ORM 是什麼鬼東西,在前面有講到 ORM 可以幫助我們解決一些問題,例如 SQL injection 的問題,但是其實不只有這個,他還可以減少我們重複程式碼的使用性,進而達到程式碼的簡潔與美麗
ORM 若要解釋起來說真的非常複雜,因為會與後端牽扯比較重,所以這邊引用 阮一峰 的簡單說法就是
ORM 就是通過實例物件的語法,完成關聯性資料庫的操作與技術,就是物件-關聯鏡像(Object/Relational Mapping)的縮寫
起手式
首先我們先來安裝一下 sequelize
1 | npm install --save sequelize |
另外這個 ORM 支援多種資料庫的處理,所以必須另外安裝相關的資料庫
1 | # 選擇對應的安裝: |
那我們這個文章的範例是使用 MySQL 所以完整套件安裝指令是這樣子
1 | npm install --save sequelize mysql2 |
那麼有可能有人會說為什麼不挑選這一個 orm
其實在最前面這個 node-orm 作者也是推薦我們使用 sequelize 或是 bookshelf,主要原因就是出在這兩個套件在社群上活耀度比較高,當我們出現問題的時候也會比較容易找到相關的解答,所以挑選社群活耀度較高的套件對於我們在開發上也是有一定幫助
那麼廢話就不多說,先來安裝套件再說
使用方式
那麼由於 sequelize 有版本差異,如果你沒有特別挑選版本的話,應該會安裝到 sequelize V5 版,所以我這邊就會直接依照 V5 版的參考文件去做撰寫
首先先開啟 app.js 引入 sequelize 套件
1 | const Sequelize = require('sequelize'); |
接下來我們要針對資料庫做連接,那麼連接語法如下
基本上連接方式有兩種,另一種是比較簡短的傳輸方式,是使用 URL 的,可是我比較喜歡下面這種
1 | const sequelize = new Sequelize('test','root','123456', { // 要連接的資料庫、帳號、密碼 |
這邊也附上 URL 傳遞方式
1 | const sequelize = new Sequelize('mysql://root:123456@localhost:3306/test') |
那麼我們該如何確定已經連接上了呢?官方有提供一個方法可以讓我們使用也就是 authenticate()
1 | const Sequelize = require('sequelize'); |
另外由於這個方法是 Promise 方法,所以可以使用 .then
、.catch
1 | const Sequelize = require('sequelize'); |
所以這時候我們來執行一下 node app.js
看看會得到什麼訊息
那如果資料庫沒有啟用呢?又或者是帳號密碼錯誤呢?
接下後面會講該如何透過 sequelize
使用來查詢、新增、編輯、刪除資料
補充
通常 sequelize 一旦啟用連接之後就會一直保持連接狀態,但是這種狀況是不好的,如果有 100 個人連接之後也不關閉連接,那麼就有可能導致 SQL 負載,所以 sequelize 也有提供一個方式可以關閉連接,也就是 sequelize.close()
1 | const Sequelize = require('sequelize'); |
查看 MySQL 連接數
另外如果想查看目前的 MySQL 訪問數可以這樣子操作,由於我們是使用 XAMPP,所以有另一套進入 MySQL 進入的方式
首先先點擊 Shell
然後輸入以下指令
1 | mysql -u root -p |
意旨使用密碼登入 root 帳號,當你送出之後會看到這個畫面
那麼你就輸入 root 密碼就可以進入 MySQL 了
看到 MariaDB 不用太擔心,MariaDB 本身也就是 MySQL,接下來就輸入以下指令來查看連接數,但是有兩種指令
- 查看部分連接數量
1 | show processlist; |
- 查看全部連接數量 (當連接量多時此指令會跑很久)
1 | show full processlist; |
退出 MySQL 方式就輸入 \q
即可