Я новичок в использовании 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"
}