Не удается прочитать правильный запрос в GraphQL Apollo Client - PullRequest
0 голосов
/ 07 июня 2019

На одной из моих страниц в моем приложении я делаю два вызова API с помощью клиента Graphql Apollo. Один document, другой menu. Мне нужны данные меню в одном из моих компонентов, поэтому я хочу использовать readQuery, чтобы не получать его снова. Что я делаю:

const client = useApolloClient();

  try {
const testData = client.readQuery({
  query: gql`
  query ($result: String) {
    menu(result:  $result) {
      text
    }
  }
`,
  variables: {
    result: „testresult”
  },
});
console.log(testData);
} catch(e) {
  console.log(e);
}

То, что делает graphQL, ищет document корневой запрос, поэтому ошибка выглядит следующим образом:

Invariant Violation: Can't find field menu({"lang":"en-us"}) on object 

{
  "document({\"lanf\":\"en-us\",\"id\":\"mySite\"})": {
    "type": "id",
    "generated": false,
    "id": "XO5tyxAAALGzcYGG",
    "typename": "Document"
  }
}.

Я считаю, что это потому, что данные меню еще не там.

Как я могу ждать, пока он там будет?

1 Ответ

1 голос
/ 07 июня 2019

Вы правы. Вы получаете сообщение об ошибке, потому что данные еще не в кеше:

Метод запроса, с другой стороны, может отправлять запрос на ваш сервер, если соответствующие данные не находятся в вашем кэше, тогда как readQuery выдаст ошибку, если данные не находятся в вашем кэше. readQuery всегда будет читать из кеша.

https://www.apollographql.com/docs/react/advanced/caching/#readquery

Чтобы сделать то, что вы хотите, используйте обычный запрос с cache-only fetchPolicy. https://www.apollographql.com/docs/react/api/react-apollo/#optionsfetchpolicy

...