Я использую Apollo 2.0. Сначала я делаю authUser
graphql
вызов сервера с заданным именем пользователя и паролем, который генерирует токен jwt
и возвращает ответный токен в ответ. Я вижу, что при успешном входе в систему User
сохраняется в cache
как значение ключа id
.
У меня есть кнопка Buy
, где мне нужно сделать validateSSOSession
для данного token
. Для validateSSOSession
мне нужно прочитать token
из кэша.
Я прошел через client.readQuery
, client.fragementQuery
, но оба не применимы для моего случая bcz client.readQuery
ожидаю, что один и тот же запрос был вызван ранее на сервер, и у меня должна быть одна и та же переменная. Поскольку у меня нет username/password
, поэтому я не могу позвонить client.readQuery
. Точно так же client.fragementQuery
ожидают id
как обязательные. Поскольку у меня нет id
, поэтому я не могу его использовать.
В настоящее время я просто повторяю data
из cache
и фильтрую для User
, как показано ниже.
const data = client.cache.data.data;
const users = _.values(data).filter(obj=>(obj.__typename==='User' && obj.token));
const token = users[0].token;
// Make graphql call to validate sso
const { data } = await client.query({
query: GET_SSO_USER,
variables: { token }
});
const authenticated = data.getSingleSignOnUser.user.userId;
Есть ли альтернативный простой способ запроса User
из кэша для данного условия?