如何在Prisma中实现多字段指定值与空值筛选
解决Prisma查询中包含NULL值的筛选问题
你遇到的问题确实是Prisma的in操作符会自动忽略null值,直接把null放进in数组里不会生效。要实现name等于"John"或NULL,且age等于22或NULL的筛选,需要把每个字段的条件拆成OR组合,再用AND关联两个字段的要求:
const results = await prisma.myModel.findMany({ where: { AND: [ // name满足:是"John" 或者 为NULL { OR: [ { name: "John" }, { name: { isNull: true } } ] }, // age满足:是22 或者 为NULL { OR: [ { age: 22 }, { age: { isNull: true } } ] } ] }, });
逻辑说明
这个查询会匹配以下所有组合的记录:
- name="John" 且 age=22
- name="John" 且 age=NULL
- name=NULL 且 age=22
- name=NULL 且 age=NULL
如果觉得{ name: null }的写法更直观,也可以替换掉{ name: { isNull: true } },两者在Prisma中效果一致。
内容的提问来源于stack exchange,提问作者André Mendes
相关产品推荐
相关产品推荐

