Day 7 - 如何建立一個 TypeScript + Node.js 環境 (2):專案架構與資料庫設定
嗨~昨天我們已經有一個能跑起來的 TypeScript + Node.js 開發環境。接著,在正式開發 API 之前,先來點暖身 —— 建立一個清晰、可維護的專案架構,並完成環境變數與資料庫連線設定。這些基礎工具就是未來專案能否穩定推進的關鍵。
專案架構整理
建立資料夾結構
為了讓專案更有條理、方便後續維護,我們在 src
底下建立以下資料夾:
config
:存放設定檔(例如資料庫連線設定)。controllers
:處理 API 業務邏輯。entities
:定義資料庫模型 (Entity)。middleware
:存放中間件。routes
:定義 API 路由。utils
:常用工具函數。
建立指令:
1 | cd src |
最終結構如下:
1 | src/ |
環境變數設定
為什麼要用環境變數?
因為專案常常需要存放敏感資訊(像是資料庫密碼、API 金鑰),這些東西絕不能直接寫死在程式碼裡。
安裝與設定 dotenv
安裝套件與型別:
1
2npm install dotenv
npm install @types/dotenv --save-dev在專案根目錄建立
.env
檔案:1
touch .env
在檔案內輸入:
1
2
3
4
5DB_HOST=localhost
DB_NAME=db_name
DB_USERNAME=你的資料庫使用者
DB_PASSWORD=你的密碼
DB_PORT=5432確認
.gitignore
有下方配置:1
.env
⚠️ .env 內含敏感資訊,務必避免上傳到 GitHub!
資料庫連線設定
這裡我們會使用 PostgreSQL 搭配 TypeORM 作為 ORM 工具。
安裝套件
1 | npm install typeorm pg |
設定 TypeORM 連線
在 src/config
建立 db.ts
:
1 | import "reflect-metadata"; |
⚠️ synchronize: true 會自動產生 ORM 所對應的資料表,僅限開發階段使用;正式環境建議使用 migration!
定義資料模型
在 TypeORM 裡,Entity 就是資料庫模型,負責定義表格結構。
建立 Todo Entity
新增檔案:
1
2touch src/entities/Todo.ts
編輯內容:
1
2
3
4
5
6
7
8
9
10
11
12
13import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
()
export class Todo {
"uuid") (
id!: string;
()
title!: string;
default: false }) ({
completed!: boolean;
}確認
tsconfig.json
,確保支援裝飾器:1
2"experimentalDecorators": true,
"emitDecoratorMetadata": true
💡 小技巧:
!
表示該屬性必填。
👉 明天(Day 8)我們即將開始開發 API ,讓 TypeScript + Node.js 專案更豐富 🚀 !
補充資源
git commit : setup backend structure and typeORM setting