Contentful GraphQL多类型关联字段过滤失效问题咨询
Contentful GraphQL多类型关联Link字段过滤问题
结论
Contentful GraphQL不支持对关联多种内容类型的Link字段直接进行跨类型属性过滤,这正是你查询无法返回目标referral1数据的原因。
官方依据
官方文档明确限定:
仅针对设置了单一linkContentType验证的Link字段,支持一级关联关系的过滤。
你的excludedClient字段关联了Client和Client Group两种内容类型,不符合单一类型要求,因此直接使用shortName_in过滤无法生效;当你将字段改为仅关联Client Group时,满足单一类型条件,过滤逻辑即可正常工作。
解决方案
通过**OR条件+类型区分**,分别针对两种关联类型设置过滤规则,修改后的查询代码如下:
fragment ReferralClientFields on Client { shortName } fragment ReferralClientGroupFields on ClientGroup { shortName } query Referral { referralCollection(where: { OR: [ { excludeClient: { linkContentType: "client", shortName_in: ["JED"] } }, { excludeClient: { linkContentType: "clientGroup", shortName_in: ["JED"] } } ] }) { total items { title style context clientCollection(limit: 15) { items { ...ReferralClientFields ...ReferralClientGroupFields } } excludeClientCollection(limit: 30) { items { ...ReferralClientFields ...ReferralClientGroupFields } } } } }
方案说明
- 使用
linkContentType指定要过滤的关联类型(值为内容类型的机器名,通常是小写形式) - 通过
OR逻辑组合两个类型的过滤条件,覆盖Client和Client Group两种场景,从而匹配到排除了指定shortName的Referral数据
内容的提问来源于stack exchange,提问作者Henok Tesfaye
相关产品推荐
相关产品推荐

