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

如何在Prisma中正确使用AND运算符?关联查询过滤异常排查

问题原因与解决方案

问题根源

你当前的查询逻辑存在错误:some 内部嵌套 AND 是要求同一条Option记录同时满足两组条件——也就是一条Option的title既要等于square又要等于type,description既要等于20又要等于invertor,这种矛盾的记录不可能存在,所以返回空数组。而用OR时是找满足任意一组条件的单条Option,自然能正常返回;当AND数组仅含一个对象时,本质就是匹配满足该条件的单条Option,因此也能正确过滤。

解决方案

要实现“关联的Option中同时存在两条分别满足不同条件的记录”,需要把多个some条件用AND组合,让Prisma检查:Product至少有一个Option满足第一组条件,并且至少有一个Option满足第二组条件。修改后的查询代码如下:

const product = await this.prismaService.product.findMany({
  where: {
    AND: [
      {
        options: {
          some: {
            title: 'square',
            description: '20',
          },
        },
      },
      {
        options: {
          some: {
            title: 'type',
            description: 'invertor',
          },
        },
      },
    ],
  },
  include: { options: true },
});

内容的提问来源于stack exchange,提问作者Борисов Максим

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:22:39