Prisma 上的查询 Enum 类型

Jor*_*ora 3 postgresql enums typescript prisma

我正在尝试对一个简单的 prisma 实体运行查询User。模型:

model User {
  id           Int              @id @default(autoincrement())
  name         String?
  email        String           @unique
  role         Role             @default(USER)
}
Run Code Online (Sandbox Code Playgroud)

实体包含一个用枚举类型调用的 Userprop 。枚举:RoleRole

enum Role {
  USER
  ADMIN
}
Run Code Online (Sandbox Code Playgroud)

除了在原始 SQL 查询中执行此操作之外,如何使用 Prisma where API 执行此操作:

const whereNameIs = await prisma.user.findMany({
  name: 'Rich',
  role: ?
})
Run Code Online (Sandbox Code Playgroud)

任何enum用 TS 或转换编写的自定义类型都不会匹配。打字稿中有没有解决这个问题的方法?

Jor*_*ora 8

Prisma 库提供您在架构文件中定义的任何枚举类型的命名导出:

import { Role } from '@prisma/client'

app.get('users', async (req, res) => {
  const users = await prisma.user.findMany({
    name: 'Rich',
    role: Role.ADMIN
  });
});
Run Code Online (Sandbox Code Playgroud)

如果您动态接收值(例如通过查询字符串),那么它将如下所示:

const { role } = req.query;

const users = await prisma.user.findMany({
  name: 'Rich',
  role: Role[role as keyof typeof Role]
});
Run Code Online (Sandbox Code Playgroud)