跳至主要内容

後端開發日誌

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