如何在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,提问作者Борисов Максим
相关产品推荐
相关产品推荐

