【问题标题】:Apollo Client Local state - LoggedIn QueryApollo 客户端本地状态 - LoggedIn 查询
【发布时间】:2020-01-23 11:01:02
【问题描述】:

我是使用 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"
}

【问题讨论】:

    标签: graphql next.js apollo-client


    【解决方案1】:

    我的设置是错误的。按照这个家伙的设置,一切正常:https://www.youtube.com/watch?v=CnhHeSAAbRM

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 2020-11-07
      • 1970-01-01
      • 2018-07-25
      • 2021-06-01
      • 2020-06-07
      • 2019-06-18
      • 2019-08-03
      • 2021-03-20
      相关资源
      最近更新 更多