在前一篇文章中建立好MySQL資料庫後,如果想要在資料庫中輸入一些預設資料,則需要建立種子資料,在終端中執行下列指令產生種子資料:
npx sequelize seed:generate --name 種子資料名稱// 官方範例
npx sequelize-cli seed:generate --name demo-user
種子資料內的設定跟migration內容很相似,同樣有up負責增加、down移除種子資料的內容。
種子資料的增加設定
在migration中表格的創立是使用queryInterface來執行,種子資料的部分也是;種子資料創造的指令是bulkInsert,相關的指令可以看官方文件
一般來說只需要設定tableName、records這兩個參數就好,tableName如字面上所示是表格名稱,records則是要貯存的資料,是一連串物件組成的陣列
Record的建立方式:
建立資料的最基本作法就是直接寫入物件中,直接放到bulkInsert中
也可以獨立成json檔案出來,在輸入資料時引用
或是使用JS中陣列的方法Map,設定額外的資料
如果需要設定資料數量,可以使用Array.from
這邊使用length來指定物件的數量,同時使用map方法配合箭頭函示來設定物件資料
Record使用到的工具:
- 密碼雜湊:如果要記錄使用者資料等隱密資訊,例如使用者密碼,可以使用bcrypt
2. 假資料:需要需多假資料時,faker非常好用,大部分的假資料設定都可以使用
3. 隨機圖片:需要隨機圖片時,可以使用LoremFlickr、Lorem Picsum 等網站,裡面提供很多種隨機圖片,而且也能指定大小
種子資料的移除設定
移除時,則需要使用queryInterface的bulkDelete
比較特別一點的是,如果不停加入、移除種子資料,資料的index會一直增加,而不是從0開始,這時候只要把bulkDelete的option中truncate、restartIdentity這兩個值設為true即可
種子資料存入MySQL資料庫
設定完上列設定時,千萬別忘記執行sequelize-cli指令,將種子資料存入資料庫:
// 將所有種子資料存入資料庫
npx sequelize db:seed:all
// 將所有種子資料移除資料庫
npx sequelize db:seed:undo:all
到這邊種子資料就建立完成,輸入完畢啦。