Prisma
規則
- 架構位於
prisma/schema.prisma— 是唯一的真理來源 - 優先使用
select而非include— 僅擷取需要的欄位 - 多步驟修改使用交易:
prisma.$transaction([...]) - 軟刪除透過
deletedAt DateTime?欄位 + 中介軟體過濾器實作 - 經常查詢的欄位加上索引:
@@index([fieldName]) - 關聯:務必定義雙邊(
@relation) - 遷移:
npx prisma migrate dev --name descriptive-name - 無伺服器環境的連線池:使用 Prisma Accelerate 或 PgBouncer
- 類型生成:更動架構後執行
npx prisma generate
避免
- 當只需要一個欄位時使用
include: { relation: true }— 改用select - N+1 查詢 — 使用
include或select搭配巢狀關聯 - 當 Prisma API 能夠處理時使用原始 SQL — 僅在複雜聚合時使用
$queryRaw prisma.table.findMany()沒有take限制 — 務必分頁