Graphql Reaction-Apollo IntrospectionFragmentMatcher - PullRequest
0 голосов
/ 02 декабря 2018

Я использую GitHub Graphql API, и я написал следующий код с response-apollo, но когда я разбиваю страницы на страницы после многих запросов, я получаю следующие ошибки в консоли.

Вы используете простое (эвристическое) совпадение фрагментов, но ваши запросы содержат типы объединения или интерфейса.Клиент Apollo не сможет точно отобразить фрагменты.Чтобы устранить эту ошибку, используйте IntrospectionFragmentMatcher, как описано в документации: https://www.apollographql.com/docs/react/recipes/fragment-matching.html

.

ПРЕДУПРЕЖДЕНИЕ: происходит эвристическое сопоставление фрагментов!

.

Отсутствует имя поля в {"__typename": "Organization"}

Отсутствует поле avatarUrl в {"__typename": "Organization"}

Отсутствуют репозитории полей в {"__typename": "Organization"}

, и я написал следующие коды:

gql`
  query($username: String!, $nextPage: String) {
    search(query: $username, type: USER, first: 100, after: $nextPage) {
      pageInfo {
        hasNextPage
        endCursor
      }
      edges {
        node {
          ... on User {
            name
            avatarUrl
            repositories {
              totalCount
            }
          }
        }
      }
    }
  }
`;


handleSubmit = ({ username }) => {
    const { client } = this.props;
    this.setState({
      loading: true,
      searchTerm: username,
    });
    client
      .query({
        query: SEARCH_USER,
        variables: {
          username
        }
      })
      .then(({ data }) => {
        this.setState({
          loading: false,
          searchList: data.search.edges,
          pagination: data.search.pageInfo,
        });
      })
      .catch(err => {
        console.warn(err);
      });
  };

1 Ответ

0 голосов
/ 17 января 2019

Поскольку в Apollo недостаточно информации о вашей схеме GraphQL, вам нужно как-то ее предоставить.Apollo имеет хорошо написанную документацию по этой теме.

В нем описывается использование сценария для внутреннего анализа вашего сервера GraphQL для получения недостающей информации об объединениях и интерфейсах.

Чтобы сделать процесс еще проще, я написал плагин для GraphQL Code Generator, который автоматизирует все.Есть глава под названием «Сопоставление фрагментов» , которую я рекомендую прочитать.

Либо первое, либо ручное решение, либо второе должно решить вашу проблему:)

...