Компонент запроса возвращает null для данных, НО сеть показывает ответ

Данные нулевые, НО я вижу ответ как в /grahpql, так и в сети.

ЧТО ТАКОЕ ЗАПРОС:

query GetProductById($product_id: Int!) {
  getProductById(product_id: $product_id) {
    id
    product_id
    name
    product_type
    create_time
    update_time
    sizes
    click_url
    price
    discount_price
    coupon_code
    sale_date
    sku
    colors
    in_stock

    regions {
       ...domestic
       ...international
    }
  }
}

Обновлено: ОБНОВЛЕНИЕ: СУЖИЛ ЭТО ДО ЭТОГО :::

    regions {
     ...domestic
     ...international
    }

Я ДУМАЮ, ЭТО ПРОБЛЕМА.. НЕТ?

import { IntrospectionFragmentMatcher } from 'apollo-cache-inmemory';

const fragmentMatcher = new IntrospectionFragmentMatcher({
  introspectionQueryResultData: {
    __schema: {
      types: [
        {
          kind: 'INTERFACE',
          name: 'Regions',
          possibleTypes: [
            {
              name: 'domestic'
            },
            {
              name: 'international'
            }
          ]
        }
      ]
    }
  }
});
 export default fragmentMatcher;




  import fragmentMatcher from './RegionFragmentMatcher';

  const cache = new InMemoryCache();
  const apolloClient = new ApolloClient({
    fragmentMatcher,
    cache,
    link: new HttpLink({
      uri: `${config.url}/graphql`,
      credentials: 'include'
    }),
     resolvers: Resolvers(cache),
     addTypename: true,
     dataIdFromObject,
     introspection: true
    });

    export default apolloClient;

Какой запрос?

Daniel Rearden 01.07.2019 00:37

Updated для включения запроса

james emanon 01.07.2019 00:50

Хорошо, я начал соединять некоторые ключи запроса, и в какой-то момент это сработало. ТАК, кажется, есть что-то, что забивает его. НО ПОЧЕМУ в одном случае работает, в другом нет....? очень странно. Итак, я удалил примерно половину ключей запроса... Я верну их и пройдусь по одному..

james emanon 01.07.2019 00:56

Пожалуйста, посмотрите мой последний комментарий, возможно, вы можете мне помочь.

james emanon 01.07.2019 01:05

В консоли отображается какое-либо предупреждение или ошибка?

Daniel Rearden 01.07.2019 01:33

invariant.esm.js:34 Вы используете простой (эвристический) механизм сопоставления фрагментов, но ваши запросы содержат типы объединения или интерфейса. Клиент Apollo не сможет точно отображать фрагменты. Чтобы устранить эту ошибку, используйте IntrospectionFragmentMatcher, как описано в документации: apollographql.com/docs/react/advanced/… AND.. this: invariant.esm.js:34 ВНИМАНИЕ: выполняется эвристическое сопоставление фрагментов! ----- НО, я использую один.

james emanon 01.07.2019 01:35

ТАКЖЕ, я закончил тем, что удалил фрагменты из «регионов», и это сработало.. ТАК, да, я думаю, как я использую FragmentMatcher.. вы видите что-нибудь, что торчит?

james emanon 01.07.2019 01:45

Вы экспортируете переменную fragmentMatcher в качестве экспорта по умолчанию? Я не вижу этого в коде, который вы вставили.

Daniel Rearden 01.07.2019 02:03

да. Я забыл вырезать/вставить, но это там. Я добавил это.

james emanon 01.07.2019 07:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
2
9
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

FragmentMatcher следует передавать конструктору InMemoryCache, а не конструктору ApolloClient:

const cache = new InMemoryCache({ fragmentMatcher });

const client = new ApolloClient({
  cache,
  link: new HttpLink(),
});

БИНГО!!! Спасибо, бро!! Вот и все.. Не знаю, как я это пропустил. Я просто предположил, что это что-то более сложное... лол. Еще раз спасибо!!!!!

james emanon 02.07.2019 21:05

Другие вопросы по теме