📜  Prisma 模式示例 - TypeScript (1)

📅  最后修改于: 2023-12-03 14:45:39.966000             🧑  作者: Mango

Prisma 模式示例 - TypeScript

Prisma 是一个强大的 ORM 工具,可以在 TypeScript 中使用,大大简化了数据库操作的工作。本文将介绍如何在 TypeScript 项目中使用 Prisma,并给出一个示例。

安装 Prisma

首先,需要安装 Prisma。可以通过以下命令进行安装:

npm install prisma --save-dev

或者,如果喜欢使用 yarn:

yarn add prisma --dev
初始化 Prisma

安装好 Prisma 之后,需要初始化 Prisma,以便能够正确地工作。可以通过以下命令初始化:

npx prisma init

这将引导你完成 Prisma 的初始化过程。

创建模型

接下来,我们需要定义数据库模型。可以在项目中创建一个 prisma 目录,并在其中创建一个 schema.prisma 文件。以下是一个简单的 schema.prisma 文件的示例:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model User {
  id       Int      @id @default(autoincrement())
  email    String   @unique
  name     String?
  posts    Post[]
  profile  Profile?
}

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

model Profile {
  id     Int     @id @default(autoincrement())
  bio    String?
  user   User    @relation(fields: [userId], references: [id])
  userId Int     @unique
}

该模型定义了三个表:UserPostProfile。这些表之间有不同的关系,如 User has many PostUser has one Profile

生成 Prisma 客户端

模型定义好之后,需要生成一个 Prisma 客户端,以便能够访问数据库。可以通过以下命令生成客户端:

npx prisma generate

或者使用 yarn:

yarn prisma generate
创建数据库表

客户端生成好之后,在数据库中创建数据库表。可以使用以下命令将模型同步到数据库:

npx prisma migrate dev --preview-feature

或者使用 yarn:

yarn prisma migrate dev --preview-feature
示例代码

现在,可以在 TypeScript 项目中使用 Prisma 了。以下代码展示了如何使用 Prisma 客户端查询用户列表:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  const users = await prisma.user.findMany()
  console.log(users)
}

main()
  .catch(e => console.error(e))
  .finally(async () => {
    await prisma.$disconnect()
  })

需要注意的是,@prisma/client 默认导出的是 Prisma 客户端的命名空间,而不是 Prisma 客户端本身。因此,在导入客户端时需要使用花括号。

结论

本文介绍了如何在 TypeScript 中使用 Prisma,并给出了一个示例。使用 Prisma 可以大大简化数据库操作的工作,同时也提高了应用程序的可维护性。