GraphQL使用where过滤器查询报Unknown argument "where"错误咨询
问题原因
报错核心是where筛选参数放错了位置:
- 错误信息明确提示
ShoepostEntity.attributes字段不存在where入参,你当前把筛选条件写在了单条数据的attributes字段上,这个字段的作用仅为指定要返回的内容字段,本身不支持任何筛选类参数。 - 所有针对数据集的筛选、排序、分页参数,都要写在集合查询的根字段(也就是你代码里的
shoeposts)层级,先从全量数据里过滤出符合条件的记录,再返回对应字段内容。 - 你写的原查询末尾多了一个多余的右大括号,本身也存在语法问题。
修正方法
把筛选参数移到shoeposts字段后方,删掉多余的闭合大括号即可,根据你使用的Strapi版本选择对应写法:
- Strapi v3 版本(筛选参数名为
where):
shoeposts(where: {slug: "NikeDunkLow"}) { data { attributes { title slug } } }
- Strapi v4 及以上版本(筛选参数改名为
filters,需要显式指定匹配操作符,eq代表精确匹配):
shoeposts(filters: {slug: {eq: "NikeDunkLow"}}) { data { attributes { title slug } } }
调整后查询会先过滤出slug为NikeDunkLow的记录,再返回对应的标题和slug字段,不会再触发参数不存在的校验报错。
内容的提问来源于stack exchange,提问作者damian-lw
相关产品推荐
相关产品推荐

