GraphQL对可重复组件执行深度过滤时抛出错误问题
报错原因
- 你将
link组件设置为可重复类型后,内容类型中的doc字段在GraphQL Schema中对应为组件数组,不是单个组件对象,你当前使用的单对象字段过滤语法无法匹配数组结构,所以触发字段不存在的报错 - 你的过滤字段名配置错误:你需要筛选的是
link组件内部的language字段,不是组件字段本身的link属性
正确查询写法
如果要先过滤出所有包含EN语言link条目的内容,同时仅返回符合条件的单个link条目,使用以下适配Strapi v4主流版本的查询即可:
query { test(where: { doc: { elemMatch: { language: { eq: "EN" } } } }) { Title Langu doc(filters: { language: { eq: "EN" } }) { language text } } }
语法说明
- 外层
where中的elemMatch是数组类型字段的专用过滤操作符,用来匹配数组中至少有一个元素满足嵌套条件 - 内层
doc字段后加的filters用来过滤返回的doc数组内容,仅保留符合语言条件的条目,不会返回该内容下所有的link组件
内容的提问来源于stack exchange,提问作者sagusara
相关产品推荐
相关产品推荐

