Prisma 教程 | 快速入门

📌 准备工作

在开始之前,请确保你的机器上已安装 Node.js(v20.19+、v22.12+ 或 v24.0+)。

🚀 第一步:创建项目并安装 Prisma

  1. 创建项目目录并初始化

    bash 复制代码
    mkdir hello-prisma
    cd hello-prisma
    npm init -y
  2. 安装 TypeScript 相关依赖

    bash 复制代码
    npm install typescript tsx @types/node --save-dev
    npx tsc --init

    这会将你的项目初始化为一个 TypeScript 项目。

  3. 安装 Prisma CLI

    Prisma CLI 是管理 Prisma 项目的核心工具,我们将它作为开发依赖安装。

    bash 复制代码
    npm install prisma --save-dev

⚙️ 第二步:初始化 Prisma

使用 Prisma CLI 的 init 命令来创建 Prisma 的配置文件。

bash 复制代码
npx prisma init --datasource-provider sqlite

这个命令会做几件事:

  • 创建一个名为 prisma 的文件夹,并在其中生成核心的 schema.prisma 文件。
  • 在项目根目录创建一个 .env 文件,用于存放数据库连接字符串等环境变量。

📝 第三步:定义数据模型

打开 prisma/schema.prisma 文件,你会看到一些默认配置。将其内容替换为以下数据模型:

prisma 复制代码
// prisma/schema.prisma
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}

这个模型定义了两个表:UserPost,它们之间是一对多的关系。

🗄️ 第四步:运行迁移,创建数据库

数据模型定义好后,需要将其同步到数据库中。Prisma Migrate 会为我们生成并执行 SQL 语句。

bash 复制代码
npx prisma migrate dev --name init

这个命令会:

  1. prisma/migrations 目录下创建一个名为 init 的 SQL 迁移文件。
  2. 在数据库中执行这个 SQL 文件,创建 UserPost 表。
  3. 自动执行 prisma generate 命令,生成 Prisma Client。

对于 SQLite,这个命令还会在 prisma 目录下创建一个 dev.db 数据库文件。

💻 第五步:安装 Prisma Client 并查询数据

Prisma Client 是一个类型安全的数据库查询构建器,专为你的数据模型生成。

  1. 安装 Prisma Client 包

    bash 复制代码
    npm install @prisma/client
  2. 创建查询脚本

    在项目根目录创建一个名为 script.ts 的文件,并写入以下代码:

    typescript 复制代码
    import { PrismaClient } from '@prisma/client'
    
    const prisma = new PrismaClient()
    
    async function main() {
      // 创建一个新用户
      const newUser = await prisma.user.create({
        data: {
          name: 'Alice',
          email: 'alice@prisma.io',
        },
      })
      console.log('创建的新用户:', newUser)
    
      // 查询所有用户
      const allUsers = await prisma.user.findMany()
      console.log('所有用户:', allUsers)
    }
    
    main()
      .then(async () => {
        await prisma.$disconnect()
      })
      .catch(async (e) => {
        console.error(e)
        await prisma.$disconnect()
        process.exit(1)
      })
  3. 运行脚本

    bash 复制代码
    npx tsx script.ts

    你应该能在终端看到新创建的用户和所有用户的列表。

🧰 Prisma 生态的其他工具

除了核心的 Prisma Client 和 Migrate,Prisma 生态还提供了其他有用的工具:

  • Prisma Studio :一个现代化的数据库可视化编辑器。在终端运行 npx prisma studio,它会在 http://localhost:5555 打开一个界面,让你可以直观地浏览和编辑数据。
  • Prisma Postgres:Prisma 官方提供的托管 PostgreSQL 数据库服务,可以与 Prisma ORM 无缝集成,提供更便捷的云端数据库体验。