Повторное использование запроса GraphQL в другом запросе без дублирования - PullRequest
0 голосов
/ 16 сентября 2018

Скажем, у меня есть два запроса 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
      }
    }
  }

Как мне это сделать, не дублируя запрос C как в запросе A, так и в B (что не было бы очень СУХОЙ)?Вы можете использовать фрагменты для фрагментов только в одном запросе, если я правильно понимаю.

Обновление:

Поэтому я имею в виду что-то вроде этого:

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 голосов
/ 17 сентября 2018

Вы можете определить фрагменты в Query and Mutations и использовать их следующим образом:

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(...){...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...