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

在Prisma + NestJS中,带UserSelect的Promise应使用什么类型?

解决Prisma动态Select的返回类型推导问题

你可以借助Prisma内置的Prisma.UserGetPayload类型,结合泛型来实现动态select对应的返回类型推导:

async getOneUser<T extends Prisma.UserSelect>(
  where: Prisma.UserWhereUniqueInput,
  userSelect?: T
): Promise<Prisma.UserGetPayload<{ select: T }>> {
  const user = await this.prisma.user.findUnique({ 
    where, 
    select: userSelect || undefined 
  })
  return user
}

关键说明:

  • 泛型T约束为Prisma.UserSelect,让TypeScript能捕获传入的userSelect的具体字段结构
  • Prisma.UserGetPayload<{ select: T }>会根据T的结构自动生成对应的返回类型
  • 若需要不传userSelect时默认返回完整User类型,可以给泛型设置默认值:
async getOneUser<T extends Prisma.UserSelect = Prisma.UserSelect>(
  where: Prisma.UserWhereUniqueInput,
  userSelect?: T
): Promise<Prisma.UserGetPayload<{ select: T }>> {
  const user = await this.prisma.user.findUnique({ where, select: userSelect })
  return user
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:22:03