後端開發日誌
2023/07/16
- 種子資料插入資料表時,使用者密碼加密處理。
遠端資料庫插入種子資料
railway run npm run migrate:down railway run npm run migrate:up railway run npm run seed
編寫後端路由
安裝 SQL query builder: Knex
yarn add knex mkdir db touch db/db.js
確保專案在不同環境下都能正確連接資料庫
編輯 db/db.js、 改寫 config/config.json
編寫 DAO
touch db/productsDao.js touch db/usersDao.js
2023/07/15
Railway 布署
- npm i -g @railway/cli
- railway login --browserless
- Railway Dashboard 開新專案(GitHub Repo、Database 都開起來)
- Variables 要設定 NODE_ENV=production
- Variables 要設定 MYSQL_URL(值讓系統自動代入。不設定就無法用 railway run 執行 migrate)
- railway link
- railway up
- railway run [cmd] // 例:$ railway run npx sequelize db:migrate
建立種子資料
編寫種子資料 JSON 檔
- touch seeders/users.json
- touch seeders/categories.json
- touch seeders/orders.json
- touch seeders/products.json
- touch seeders/ordered_products.json
編寫將種子資料插入資料表的代碼
- npx sequelize seed:generate --name users-seed-file
- npx sequelize seed:generate --name categories-seed-file
- npx sequelize seed:generate --name orders-seed-file
- npx sequelize seed:generate --name products-seed-file
- npx sequelize seed:generate --name ordered_products-seed-file
檢驗資料是否能正確插入資料表
- npx sequelize db:seed --seed 20230715161209-users-seed-file
- npx sequelize db:seed --seed 20230715161211-categories-seed-file
- npx sequelize db:seed --seed 20230715161212-orders-seed-file
- npx sequelize db:seed --seed 20230715161213-products-seed-file
- npx sequelize db:seed --seed 20230715161215-ordered_products-seed-file
檢驗資料是否能批次插入資料表
npm run migrate:down npm run migrate:up npm run seed
2023/07/14
- mkdir db
安裝 MySQL Driver、Sequelize
yarn add mysql2 sequelize sequelize-cli
MySQL Workbench
安裝後將資料庫 Collation 設定為 utf8mb4_unicode_ci
建立資料表
npx sequelize init 修改 config/config.json 修改 models/index.js git commit: initialize sequelize
npx sequelize model:generate --name User --attributes email:string,password:string,role:string,buyer_phone:string,shipping_address:string --underscored
git commit: add user model
npx sequelize model:generate --name Order --attributes user_id:integer,order_status:string --underscored
git commit: add order model
npx sequelize model:generate --name Category --attributes name:string --underscored
git commit: add category model
npx sequelize model:generate --name Product --attributes name:string,description:text,price:integer,inventory:integer,category_id:integer --underscored
git commit: add product model
npx sequelize model:generate --name OrderedProduct --attributes order_id:integer,product_id:integer,amount:integer --underscored
git commit: add orderedproduct model
編輯 migration(統一代碼格式、欄位名稱該以蛇記法標示、設定關聯) 編輯 models/*.js(統一代碼格式、欄位名稱以小駝峰標示、加入 tableName: Names) npx sequelize db:migrate npx sequelize db:migrate:undo:all
git commit: add SQL table relationships
2023/07/13
- 建立後端專案資料夾
- 安裝 swagger-ui-express
- 安裝 yamljs