Клиент Apollo не отправляет запрос на сервер - PullRequest
0 голосов
/ 08 марта 2019

Это очень странно для меня. Я пытаюсь заставить аутентификацию работать в моем приложении Vue. Я отправляю запрос на вход, который возвращает полезную нагрузку с полем viewer . После успешного входа я перезагрузил страницу. При каждом изменении маршрута я внедрял промежуточное ПО, которое отправляет на сервер запрос viewer , чтобы проверить, аутентифицирован ли текущий пользователь:

export const routerMiddleware: NavGuard = async (to, from, next) => {
    const { data, errors } = await apollo.query<{ viewer: any }>({
        query: VIEWER_QUERY,
        fetchPolicy: 'network-only',
    });
    const viewer = data.viewer;
    if (viewer) next()
    else next('/app');
};

Я точно знаю, что промежуточное программное обеспечение вызывается и что запрос не попадает на сервер . Запрос возвращает data: { viewer: null }, поэтому он, похоже, получает свои данные откуда-то, но определенно не с сервера, несмотря на то, что для fetchPolicy установлено значение «только для сети» .

У меня есть еще одно промежуточное ПО с почти идентичной настройкой для другого маршрута, который нацелен на другой запрос, и работает нормально . Я даже могу поместить оба запроса рядом в одном промежуточном программном обеспечении, и только один из них будет запущен на сервере.

Я думаю о возможных причинах этого. Может ли это быть связано с предыдущим запросом на вход, возвращающим поле viewer ?

Я думаю, что трудно найти ответ без дополнительного контекста, но я не уверен, какой контекст имеет отношение к этому.

Это зритель тип:

type Viewer {
  id: ID!
  name: Name
  email: String!
  ssn: String
  phone: String
  imageUrl: String
  thumbnailUrl: String
  language: String!
  admins: [Admin!]!
  employees: [Employee!]!
  jobs: Jobs!
  notifications: [Notification!]!
  invitations: [Invitation!]!
  zendeskToken: String!
}

type Query {
  viewer: Viewer
}

Просмотр Запрос

{
    viewer {
        id
        admins {
            id
            organisation {
                id
            }
        }
    }
}
...