用于具有两种内容类型的链接字段的内容丰富的 GraphQL 集合过滤器

问题描述 投票:0回答:1

我有

Referral
内容类型,其中有
excludedClient
字段,它是一个链接(许多引用),它由
Client
| 组成。
Client Group
内容类型。

Client
Client Group
内容类型都有
shortName
字段,它是一个字符串,我希望获得排除客户端或客户端组名称短名称的引用。

fragment ReferralClientFields on Client {
  shortName
}

fragment ReferralClientGroupFields on ClientGroup {
  shortName
}

query Referral {
  # add your query
  referralCollection(where: {
    excludeClient: {
      shortName_in: ["JED"]
    }
  }) {
    total
    items {
      title
      style
      context
      clientCollection(limit: 15) {
        items {
          ...ReferralClientFields
          ...ReferralClientGroupFields
        }
      }
      excludeClientCollection(limit: 30) {
        items {
          ...ReferralClientFields
          ...ReferralClientGroupFields
        }
      }
    }
  }
}
  • 我有一个名称较短的客户组
    JED
  • 并且
    JED
    客户组是从推荐中排除的客户的一部分,
    referral1
    ,但上述过滤器未返回,
    referral1
    ,即使有一个被排除的客户组的简称为
    JED

注意:如果我将

excludedClient
字段设置为只有一种内容类型,即
Client Group
,则上述查询将返回引荐。

那么,内容丰富的 GraphQL 不支持对具有多种内容类型的链接字段进行过滤吗?从文档中它只提到了具有单一内容类型的

Link
字段。 https://www.contentful.com/developers/docs/references/graphql/#/reference/collection-filters/sys-filters

对于具有单个 linkContentType 验证的链接字段。过滤 深度仅限于一层关系。

graphql contentful contentful-api
1个回答
0
投票

您需要将

where
子句移至查询的
excludeClient
部分

query Referral {
  referralCollection(limit: 10) {
    total
    items {
      title
      style
      context
      clientCollection(limit: 15) {
        items {
          ...ReferralClientFields
          ...ReferralClientGroupFields
        }
      }
      excludeClientCollection(limit: 30, where: {
        shortName_in: ["JED"]
      }) {
        items {
          ...ReferralClientFields
          ...ReferralClientGroupFields
        }
      }
    }
  }
}

这是相关文档:https://www.contentful.com/developers/docs/references/graphql/#/reference/collection-filters/nested-collection-filters

© www.soinside.com 2019 - 2024. All rights reserved.