Strapi.js GraphQL请求报错:预期StringFilterInput类型却得到普通字符串
错误诱因
该错误属于GraphQL参数类型校验失败问题,Strapi v4版本的GraphQL查询逻辑中,字符串类型字段的过滤参数无法直接传入字符串值,必须符合StringFilterInput规定的结构传参。
你之前其他站点同类逻辑可正常运行,大概率是此前用的是Strapi v3版本,v3版本的过滤语法支持直接传字符串值,v4做了不兼容的语法调整,该问题和操作用户权限无关,因此切换用户无法解决。
解决方案
- 如果你要做精确匹配,原来的错误写法参考如下:
query { articles(filters: { author: "ann.bystry" }) { data { id attributes { title } } } }
需要改为指定匹配操作符的写法:
query { articles(filters: { author: { eq: "ann.bystry" } }) { data { id attributes { title } } } }
- 如果你需要其他匹配规则,直接替换
eq操作符即可,常用的字符串匹配操作符包括:eq:精确等于ne:不等于contains:包含指定字符串startsWith:以指定字符串开头endsWith:以指定字符串结尾notContains:不包含指定字符串
- 如果是动态传参的场景,变量定义也要同步调整类型,原来定义
$author: String的要改为$author: StringFilterInput,传参时也要传入对应结构的对象。
内容的提问来源于stack exchange,提问作者AnnBistry
相关产品推荐
相关产品推荐

