在Apollo解析器中从服务器读取数据

时间:2018-12-08 23:19:11

标签: graphql apollo

因此,我具有用于在身份验证期间管理本地状态的解析器,该更新器可更新当前用户。

updateCurrentUser: (_, { username, password }, { cache }) => {
  const LOGIN = gql`
        query Authenticate($username: String!, $password: String!){
          authenticate(username: $username, password: $password) {
            username
            token
          }
        }`
  const login = server.readQuery({ query: LOGIN, variables: {username: username, password: password} })
  if (login === null) {
    cache.writeQuery({
      query: gql`
      query GetLoginError {
        loginError @client {
          error
        }
      }`,
      data: {
        loginError: {
          error: 'wrong loing data'
        }
      }
    })
  }
  else {
    const newData = {
      currentUser: {
      ...login
    }}
    cache.writeQuery({ query: GET_CURRENT_USER, data: newData })
  }
  return null;
}

很显然,第9行是错误的,但是我没有找到任何可行的方法来在本地状态发生变化的情况下执行对服务器的调用而不进行一些奇怪的修改。正确的方法是什么?

更新: 在服务器突变后,至少有什么好方法可以更新本地状态?

0 个答案:

没有答案