readQuery из кеша приводит к не может найти поле <field>для объекта не определено - PullRequest
0 голосов
/ 01 января 2019

Я начинаю работать с graphQL и apollo.Я делаю несколько простых запросов и мутаций, но когда я пытаюсь получить доступ к данным из кэша apollo, я получаю сообщение «Не удается найти поле me для объекта undefined», но при использовании плагина apollo chrome он возвращает правильные данные.

При входе в мое приложение я запускаю простой запрос, который выбирает объект пользователя с сервера.Журналы корректны, я могу видеть в chome dev apollo под запросами и кешем, что мои пользовательские данные там есть.

const ME_QUERY = gql`
query {
    me {
    _id
    username
    password
    exchanges {
        name
        active
        }
    }
}
`;

<Query query={ME_QUERY}>
  {({loading, error, data}) => {
    if (error) {
      return <Error error={error.message} />;
    }
    if (data) {
      console.log(data, 'data');
    }
    return <div>asdf</div>
  }}
</Query>

Я завернул с помощью Aplolo и могу нормально регистрировать объект клиента в компоненте, где я нахожусьпытаюсь запросить.Я запускаю следующий код:

componentDidMount() {
    console.log(this.props.client.readQuery, 'propps');
    const  user = this.props.client.readQuery({
        query: gql`
{
  me {
    _id
    username
    password
    exchanges {
      name
      active
    }
  }
}
      `
});
console.log(user, 'user');

И это приводит к Uncaught Error: Не удается найти поле me для объекта undefined Я также пытался добавить переменные, но это не помогло.

Какой объект не определен?Любая идея, почему мой запрос не удается?

1 Ответ

0 голосов
/ 29 мая 2019

Вы, вероятно, используете клиент Apollo> 2.5, который обрабатывает состояние локально.Прочтите руководство по миграции для получения дополнительной информации.

  • Используйте клиент по умолчанию resolver для разрешения локального состояния
  • Используйте cache.write для записи данных по умолчанию вваш кеш.Это та часть миграции, которая вызывает ваш сбой.
...