跳至主要内容

如何从 TypeORM 迁移到 Prisma ORM

15 分钟

介绍

本指南将向你展示如何将你的应用程序从 TypeORM 迁移到 Prisma ORM。我们将使用 TypeORM Express 示例 的扩展版本作为 示例项目 来演示迁移步骤。

本迁移指南使用 PostgreSQL 作为示例数据库,但它同样适用于 Prisma ORM 支持的任何其他关系型数据库。你可以在 Prisma ORM vs TypeORM 页面上了解 Prisma ORM 与 TypeORM 的比较。

先决条件

在开始本指南之前,请确保您已具备以下条件:

  • 你想要迁移的 TypeORM 项目
  • 已安装 Node.js(版本 16 或更高)
  • PostgreSQL 或其他支持的数据库
  • 对 TypeORM 和 Express.js 有基本的了解

2. 准备迁移

2.1. 了解迁移过程

从 TypeORM 迁移到 Prisma ORM 的步骤始终相同,无论你构建哪种应用程序或 API 层

  1. 安装 Prisma CLI
  2. 内省您的数据库
  3. 创建基线迁移
  4. 安装 Prisma Client
  5. 逐步将你的 TypeORM 查询替换为 Prisma Client

这些步骤适用于你正在构建 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"

2.3. 配置 Prisma

在项目根目录中创建一个 prisma.config.ts 文件,内容如下

prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';

export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
});
注意

您需要安装 `dotenv` 包来加载环境变量。如果您尚未安装,请使用您的包管理器进行安装

npm install dotenv

3. 迁移数据库 schema

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 查询。这里有一些如何转换常见查询的示例

// 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);

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. 部署你的更改

  1. 部署你的 schema 更改
npx prisma migrate deploy
  1. 部署你的应用程序代码及其更新的依赖项。

后续步骤

现在您已迁移到 Prisma ORM,您可以

  • 使用 Prisma 强大的查询 API 添加更复杂的查询
  • 设置 Prisma Studio 进行数据库管理
  • 实施数据库监控
  • 使用 Prisma 的测试工具添加自动化测试

更多信息


与 Prisma 保持联系

通过以下方式与我们保持联系,继续你的 Prisma 之旅: 我们的活跃社区。保持信息灵通,参与其中,并与其他开发人员协作。

我们真诚地感谢你的参与,并期待你成为我们社区的一部分!

© . This site is unofficial and not affiliated with Prisma Data, Inc.