Size: a a a

GraphQL — русскоговорящее сообщество

2020 December 08

GO

Google OS in GraphQL — русскоговорящее сообщество
Олег Линьков
можно либо через директивы, либо мидлвару зарегистрировать в app, для фастифи примеров море
но в Node js route есть прописано  но Graphql как добавить
источник

GO

Google OS in GraphQL — русскоговорящее сообщество
источник

GO

Google OS in GraphQL — русскоговорящее сообщество
но Graphql не принимает такие роуты
источник

GO

Google OS in GraphQL — русскоговорящее сообщество
authJwt.verifyToken в Graphql как могу передать ?
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
а зачем ему принимать, создаете в фастифи мидлвару (плагин), добавляете хук prevalidation и прокидываете в контекст разобранное содержимое токена. Внутри graphql проверяете наличие объекта в контексте
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Вариаций множество. Определенного алгоритма проверки токена нет, советую посмотреть болерплейты для понимания
источник

GO

Google OS in GraphQL — русскоговорящее сообщество
Олег Линьков
а зачем ему принимать, создаете в фастифи мидлвару (плагин), добавляете хук prevalidation и прокидываете в контекст разобранное содержимое токена. Внутри graphql проверяете наличие объекта в контексте
есть где то docs или пример ?
источник

GO

Google OS in GraphQL — русскоговорящее сообщество
Олег Линьков
Вариаций множество. Определенного алгоритма проверки токена нет, советую посмотреть болерплейты для понимания
спасибо за помощь :)\
источник

S

Stanislav in GraphQL — русскоговорящее сообщество
Google OS
есть где то docs или пример ?
источник

DP

Dmitriy Pashkevich in GraphQL — русскоговорящее сообщество
Ребят, привет!

А подскажите как лучше лучше организовать работу с локальным хранилищем данных в apollo-client.
Сейчас в React собрал историю с apollo cache.writeQuery, но сталкиваюсь с тем, что не всегда актуальные данные доступны, то есть при чтении (через useQuery) остаются старыми, хотя я сделал запись новых.
Можете подсказать куда копнуть?
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Dmitriy Pashkevich
Ребят, привет!

А подскажите как лучше лучше организовать работу с локальным хранилищем данных в apollo-client.
Сейчас в React собрал историю с apollo cache.writeQuery, но сталкиваюсь с тем, что не всегда актуальные данные доступны, то есть при чтении (через useQuery) остаются старыми, хотя я сделал запись новых.
Можете подсказать куда копнуть?
Ну если ты все состояние обновляешь через writeQuery, оно не будет устаревшим, или извне происходят обновления?
источник

DP

Dmitriy Pashkevich in GraphQL — русскоговорящее сообщество
Олег Линьков
Ну если ты все состояние обновляешь через writeQuery, оно не будет устаревшим, или извне происходят обновления?
Условно говоря, у меня есть вот такой хук:
Я обновляю, только часть состояния для запроса: STORE_userDataFromServerSTORE_userDataFromServer или STORE_userDataFromTokenSTORE_userDataFromToken

export const useStoreUser = (): IUseStoreUser => {
 const apolloClient = useApollo()
 const cache = apolloClient?.cache
 const { data: userDataFromServerGql, loading: userDataFromServerLoading } = useQuery(STORE_userDataFromServer)
 const { data: userDataFromTokenGql, loading: userDataFromTokenLoading } = useQuery(STORE_userDataFromToken)

 const userDataFromServer = userDataFromServerGql?.userDataFromServer || userStore.userDataFromServer
   const userDataFromToken = userDataFromTokenGql?.userDataFromToken || userStore.userDataFromToken

 /**
  * Записать данные пользователю полученные с Apollo Server
  *
  * @param {TypeUserDataFromServer} userDataFromServerInput
  */
 const writeUserDataFromServer = (userDataFromServerInput: TypeUserDataFromServer) => {
   cache.writeQuery({
     query: STORE_userDataFromServer,
     data: {
       userDataFromServer: {
         ...userDataFromServer,
         ...userDataFromServerInput,
         personal: {
           ...userDataFromServer.personal,
           ...userDataFromServerInput.personal,
         },
         subscription: {
           ...userDataFromServer.subscription,
           ...userDataFromServerInput.subscription,
         },
       },
     },
   })
 }

 /**
  * Записать данные пользователя полученные из Token
  *
  * @param {TypeUserDataFromToken} userDataFromTokenInput
  */
 const writeUserDataFromToken = (userDataFromTokenInput: TypeUserDataFromToken) => {
   cache.writeQuery({
     query: STORE_userDataFromToken,
     data: {
       userDataFromToken: {
         ...userDataFromToken,
         ...userDataFromTokenInput,
       },
     },
   })
 }

 /**
  * Разлогинить пользователя
  */
 const logout = () => {
   writeUserDataFromServer(userStore.userDataFromServer)
   writeUserDataFromToken(userStore.userDataFromToken)
 }

 return {
   writeUserDataFromServer,
   writeUserDataFromToken,
   userDataFromServer,
   userDataFromToken,
   userDataFromServerLoading,
   userDataFromTokenLoading,
   logout,
 }
}


Запись данных я вызываю на верху приложения, к примеру через writeUserDataFromServer.

Когда обращаюсь к данным, в каком-то из компонетов - userDataFromServer, где-то null, а где-то корректные данные.
источник

DP

Dmitriy Pashkevich in GraphQL — русскоговорящее сообщество
Экземпляр apolloClient - всегда одинаковый приходит
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
А зачем вести свои именования в сторе?
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Используй сущности, что заложены схемой, тогда будет соответствие схеме и кешу
источник

DP

Dmitriy Pashkevich in GraphQL — русскоговорящее сообщество
То есть обновлять данные через мутации, а не через кэш?
источник

DP

Dmitriy Pashkevich in GraphQL — русскоговорящее сообщество
Хотя я понял. Попробую использовать схему данных которую получаю с сервера
источник

DP

Dmitriy Pashkevich in GraphQL — русскоговорящее сообщество
Спасибо
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Dmitriy Pashkevich
Хотя я понял. Попробую использовать схему данных которую получаю с сервера
именно, ведь по ней пытается соотносить кеш аполло. ну и писать конечно при мутациях
источник

TK

Taras Kapusta in GraphQL — русскоговорящее сообщество
кто-то работает с фрагментами? Вобщем подскажите, полжалуйста как оптимизировать запросы.
Я для генерации используюу graphql-codegenrator,
для каждого компонента пишу свой фрагмент и
в компоненте страницы собераю запрос из компонентов.

НО проблема в том, что  фрагменты иногда пересекаются и за счет этого вконце выходит километровый запрос с дублированием полей.
Подскажите пожалуйста, как такого избежать!
источник