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

Prisma使用findUnique过滤复合唯一索引中null值DateTime字段报错

问题原因

Prisma 4.6.0以下版本存在已知限制:当复合唯一索引包含可为空的字段时,findUnique方法不支持直接给nullable字段传null作为查询条件。你模型里的deletedAt是可选字段,旧版本Prisma生成复合唯一键的查询类型时,错误地将其推导为非空DateTime类型,所以传入null会触发类型校验报错。

解决方案

有两种可行的修复方式:

  • 方式一:升级Prisma到4.6.0及以上版本,该版本官方修复了nullable复合唯一键的null查询支持,升级后你原有的查询写法可以直接正常运行。
  • 方式二:如果暂时无法升级版本,改用findFirst方法替代findUnique,写法如下:
const account = await this.prisma.user.findFirst({
  where: {
    email: 'user@exemple.com',
    deletedAt: null
  }
});

由于你已经设置了email + deletedAt的复合唯一键,findFirst的查询结果和findUnique完全一致,最多只会返回一条匹配记录,不会影响结果准确性和查询性能。

内容的提问来源于stack exchange,提问作者Anthony Collin-Nadeau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:24:01