Клиент Apollo Локальное состояние - LoggedIn Query - PullRequest
0 голосов
/ 23 сентября 2019

Я новичок в использовании GraphQL.Очень привык к Redux, но, учитывая новые требования, я начал использовать GraphQL на бэкэнде, а также клиент apollo для локального управления состоянием.Я пытаюсь реализовать логическое значение isLoggedIn, чтобы определить, вошел ли пользователь в систему или нет.

Из того, что я прочитал, вот как вы это делаете:

import withApollo from 'next-with-apollo';
import ApolloClient, { InMemoryCache, gql } from 'apollo-boost';
import {typeDefs, resolvers} from '../resolvers/index';

const cache = new InMemoryCache();
cache.writeData({
  data: {
    User: {
      isLoggedIn: false,
      email: "empty"
    }
  }
})

    const IS_LOGGED_IN = gql`
query IsLoggedIn{
  User{
    isLoggedIn
  }
}`

`

export default withApollo(
  ({ ctx, headers, initialState }) =>
    new ApolloClient({
      uri: "http://localhost:4000/auth/authorize",
      cache: cache,
      headers: {
        authorization: ''},
      typeDefs,
      resolvers: {
        User : {
          isLoggedIn: (_, _args, {cache}) => {
            const {isLoggedIn} = cache.readQuery({query: IS_LOGGED_IN});
            return isLoggedIn;
          }
        }
      }

    }));

Я создаю объект кэша до инициализации состояния, чтобы я могвпишите в значения, которые я хочу изначально (loggedin = false).

Затем я написал запрос IS_LOGGED_IN для запроса состояния.

После этого я инициализирую состояние клиента Apollo, а также добавляю преобразователь для запроса.

У меня такое чувство, что я делаю критическую ошибку, но не уверен, что это такое.Ошибка, на которую я сейчас обращаю внимание, гласит:

Missing field __typename in {
  "isLoggedIn": false,
  "email": "empty"
}

1 Ответ

0 голосов
/ 23 сентября 2019

Мои настройки были неверными.Следуйте этой настройке, ребята, и все работает нормально: https://www.youtube.com/watch?v=CnhHeSAAbRM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...