在不重复的情况下在另一个查询中重用GraphQL查询

时间:2018-09-16 20:55:33

标签: graphql

说我有两个GraphQL查询。

查询A:

{
  entry(section: [privacyStatement]) {
    ... on PrivacyStatement {
      title
      slug
      pageTitle
      metaDescription
      metaImage {
        id
        title
        url
      }
    }
  }
}

查询B:

{
  entry(section: [contact]) {
    ... on Contact {
      title
      slug
      pageTitle
      metaDescription
      metaImage {
        id
        title
        url
      }
    }
  }
}

现在,我希望两个查询都包含另一个查询:

查询C:

  {
    services: categories(groupId: 1, level: 1) {
      id
      title
      slug
      children {
        id
        title
        slug
      }
    }
  }

如何做到这一点而不在查询A和查询B中重复查询C(查询不会很干)?如果我理解正确,则只能在一个查询中对片段使用片段。

更新:

所以我的意思是这样的:

Query A {
  entry(section: [privacyStatement]) {
    ... on PrivacyStatement {
      title
      slug
      pageTitle
      metaDescription
      metaImage {
        id
        title
        url
      }
    }
  }
}
QueryC

和:

Query B {
  entry(section: [contact]) {
    ... on Contact {
      title
      slug
      pageTitle
      metaDescription
      metaImage {
        id
        title
        url
      }
    }
  }
}
QueryC

1 个答案:

答案 0 :(得分:0)

您可以在查询和突变中定义片段,并像这样使用它们:

Query A {
  entry(section: [privacyStatement]) {
    ... on PrivacyStatement {
      title
      slug
      pageTitle
      metaDescription
      metaImage {
        id
        title
        url
      }
    }
  }
  ...C
}

fragment C on Query {
  services: categories(groupId: 1, level: 1) {
    id
    title
    slug
    children {
      id
      title
      slug
    }
  }
}

您无法定义类似这样的内容!

query A(...){...}
query B(...){...}