如何從 TypeORM 遷移到 Prisma ORM
簡介
本指南將向您展示如何將應用程式從 TypeORM 遷移到 Prisma ORM。我們將使用 TypeORM Express 示例 的擴充套件版本作為 示例專案 來演示遷移步驟。
本遷移指南使用 PostgreSQL 作為示例資料庫,但它同樣適用於任何其他 Prisma ORM 支援的關係型資料庫。您可以在Prisma ORM 與 TypeORM 頁面上了解 Prisma ORM 與 TypeORM 的比較。
先決條件
在開始本指南之前,請確保您已具備
- 要遷移的 TypeORM 專案
- 已安裝 Node.js(版本 16 或更高)
- PostgreSQL 或其他支援的資料庫
- 對 TypeORM 和 Express.js 有基本瞭解
2. 準備遷移
2.1. 理解遷移過程
無論您正在構建何種型別的應用程式或 API 層,從 TypeORM 遷移到 Prisma ORM 的步驟始終相同
- 安裝 Prisma CLI
- 內省您的資料庫
- 建立基線遷移
- 安裝 Prisma Client
- 逐步使用 Prisma Client 替換您的 TypeORM 查詢
這些步驟適用於您正在構建 REST API(例如,使用 Express、Koa 或 NestJS)、GraphQL API(例如,使用 Apollo Server、TypeGraphQL 或 Nexus)或任何其他使用 TypeORM 進行資料庫訪問的應用程式。
2.2. 設定 Prisma 配置
建立新的 Prisma 模式檔案
npx prisma init --output ../generated/prisma
使用您的資料庫連線字串更新 .env 檔案中的 DATABASE_URL
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE"
3. 遷移資料庫模式
3.1. 內省您的資料庫
執行 Prisma 的內省以從現有資料庫建立 Prisma 模式
npx prisma db pull
這將建立一個包含您的資料庫模式的 schema.prisma 檔案。
3.2. 建立基線遷移
建立並應用基線遷移以標記資料庫的當前狀態
npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > baseline.sql
npx prisma migrate resolve --applied "baseline"
4. 更新您的應用程式程式碼
4.1. 安裝 Prisma Client
安裝 Prisma Client 包
npm install @prisma/client
生成 Prisma Client
npx prisma generate
4.2. 替換 TypeORM 查詢
開始使用 Prisma Client 替換您的 TypeORM 查詢。以下是一些常見查詢的轉換示例
- TypeORM
- Prisma Client
// Find one
const user = await userRepository.findOne({
where: { id: 1 }
});
// Create
const user = await userRepository.save({
email: 'alice@prisma.io',
name: 'Alice'
});
// Update
await userRepository.update(1, {
name: 'New name'
});
// Delete
await userRepository.delete(1);
// Find one
const user = await prisma.user.findUnique({
where: { id: 1 }
});
// Create
const user = await prisma.user.create({
data: {
email: 'alice@prisma.io',
name: 'Alice'
}
});
// Update
await prisma.user.update({
where: { id: 1 },
data: { name: 'New name' }
});
// Delete
await prisma.user.delete({
where: { id: 1 }
});
4.3. 更新您的控制器
更新您的 Express 控制器以使用 Prisma Client。例如,以下是如何更新 CreateUserAction
import { prisma } from '../client'
export class CreateUserAction {
async run(req: Request, res: Response) {
const { email, name } = req.body
const result = await prisma.user.create({
data: {
email,
name,
},
})
return res.json(result)
}
}
5. 測試和部署
5.1. 測試您的更改
測試所有已遷移的端點,確保它們按預期工作
npm test
5.2. 部署您的更改
- 部署您的模式更改
npx prisma migrate deploy
- 部署帶有更新依賴項的應用程式程式碼。
下一步
現在您已遷移到 Prisma ORM,您可以
- 使用 Prisma 強大的查詢 API 新增更復雜的查詢
- 設定 Prisma Studio 進行資料庫管理
- 實現資料庫監控
- 使用 Prisma 的測試工具新增自動化測試
瞭解更多資訊
與 Prisma 保持聯絡
透過以下方式繼續您的 Prisma 之旅 我們活躍的社群。隨時瞭解情況,參與其中,並與其他開發者協作
- 在 X 上關注我們 獲取公告、直播活動和實用技巧。
- 加入我們的 Discord 提問、與社群交流,並透過對話獲得積極支援。
- 在 YouTube 上訂閱 獲取教程、演示和直播。
- 在 GitHub 上參與 透過點贊倉庫、報告問題或為問題貢獻力量。