Apollo GraphQL查询无用户浏览产品失效及空字段问题
查询无用户浏览记录的产品
问题背景
需要获取所有未被任何用户浏览过的产品,原查询语句未生效。数据模型如下:
model Products { id string views Views[] } model Views { id string createdAt DateTime user User } model User { id string email string }
原查询问题
原查询使用views: { is: empty }不符合多数GraphQL后端(如Prisma生成的API)的关联字段过滤语法,导致无法正确筛选出无浏览记录的产品:
query { Products(where: { views: { is: empty }}) { id views } }
正确查询方案
如果你的GraphQL API是基于Prisma构建的,应该使用none操作符来筛选没有关联Views记录的产品:
query { Products(where: { views: { none: {} } }) { id views } }
说明
none: {}表示筛选不存在任何关联Views记录的Products条目,正好匹配“未被任何用户浏览过”的需求。- 如果使用其他GraphQL后端框架,语法可能略有差异,但核心逻辑都是筛选关联字段为空数组的记录,可对应调整过滤条件(比如部分框架支持
views: { count: 0 })。
内容的提问来源于stack exchange,提问作者agusgambina
相关产品推荐
相关产品推荐

