You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prisma中findMany查询Enum枚举类型字段的实现方法

Prisma 枚举类型查询类型匹配方案

Prisma 执行prisma generate命令时,会自动根据Schema中定义的枚举生成对应的TypeScript类型,无需手动编写自定义枚举或额外类型转换逻辑,具体用法如下:

  • 首先同步生成最新的Prisma Client类型
npx prisma generate
  • 从@prisma/client包中直接导入自动生成的枚举类型
  • 修正查询语法:findMany的筛选条件必须包裹在where字段下,你提供的示例代码漏了这一层,本身就会触发语法/类型错误。

正确的查询代码示例:

import { PrismaClient, Role } from '@prisma/client'
const prisma = new PrismaClient()

// 示例:查询name为Rich、角色为ADMIN的用户
const whereNameIs = await prisma.user.findMany({
  where: {
    name: 'Rich',
    role: Role.ADMIN // 查询普通用户传Role.USER即可
  }
})

常见踩坑说明

  • 不要手动定义同名Role枚举,手动编写的枚举和Prisma自动生成的类型不兼容,会直接报类型不匹配错误。
  • 如果需要传入字符串格式的枚举值(比如从前端请求、环境变量拿到的'ADMIN'/'USER'字符串),只需要先做合法值校验,再做简单类型断言即可,不需要复杂转换:
const inputRole = 'USER' // 模拟外部传入的字符串值
if (Object.values(Role).includes(inputRole as Role)) {
  const res = await prisma.user.findMany({
    where: {
      name: 'Rich',
      role: inputRole as Role
    }
  })
}

内容的提问来源于stack exchange,提问作者Jora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:54:23