寫起來才不會忘。
懶人包
第一步當然是先安裝起來:
1 | npm install --save-dev sequelize-cli |
接下來的步驟:
- 初始化
npx sequelize-cli init
- 產生 model
model:generate
- 執行 migration
db:migate
初始化
使用 npx sequelize-cli init
來初始化 ORM,不過其實也能 node_modules/.bin/sequelize init
,速度上可能會快一點。
總之這一步會產生幾個資料夾:
1 | ├───config |
這邊最重要的是先去 config.json 把資料庫連線給設定好,接著就能進到下一步了。
至於 migrations 的部分做個解釋,可以把它想成是「用來改變資料庫狀態」的東西,裡面會有兩個 function:up
和 down
。
up
的作用就是「當要進入下一個狀態時,create
一個新的 table」,而 down
則是「當要返回到前一個狀態時,drop
掉原本的 table。
所以:
- 進入下個狀態:
db:migrate
- 返回上個狀態:
db:migrate:undo
建立 Model
建立 Model 的指令:model:generate
name
代表 Model 名稱attribute
代表結構的設定
1 | npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string |
其實就跟這個一樣,只是改成用 CLI 來處理而已:
1 | // 定義一個 User 的 table |
執行完後就會產生一個新的 Model 和 Migration:
1 | ├───migrations |
接著可以注意一下 Model 的部分:
1 | 'use strict'; |
如果你對產出來的結果不滿意,都可以在這裡做修改。
執行 Migration
1 | npx sequelize-cli db:migrate |
簡單來說,這一步就跟 sync
在做的事情一樣,到這裡才是真正到資料庫建立 table
最後
上面都做好以後,就可以直接在你的 JS 裡面使用 ORM 了:
1 | // 所有 model 都會被綁在 db 上 |
就這麼簡單囉。
附註:想要改 Schema 的話要怎麼改
補更:改了 Migration 後一樣要改 Model,不然後來的操作會有 Bug(找不到對應欄位,變成空值)
如果是透過 db:migrate
的方式來同步資料庫,那就要去改 migration 裡面的資料,強調一下:
- 不是改 Model
- 不是改 Model
- 不是改 Model
改 Model 只適用在 sync
的情況,這點要特別注意。
接著流程是這樣:
- 先去改 migration 中的內容
db:migate:undo
先回到上一層狀態db:migate
建立新的 migration
就這麼簡單囉!