Size: a a a

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

2019 April 10

U

Uxname in GraphQL — русскоговорящее сообщество
egoarka
есть такое, но там еще и серверная часть кастомная (т.е. нет совместимости с аполло)
https://github.com/kesne/subscriptions-transport-uws/tree/d6cf682caede1342a952d3c14a06e0718b9ac4e3
эм, ну если это по спецификации GraphQL сделано, то должна быть совместимость по идее. Разве что они разные протоколы могут юзать (хотя скорее всего и там и там http & ws)
источник

e

egoarka in GraphQL — русскоговорящее сообщество
Uxname
эм, ну если это по спецификации GraphQL сделано, то должна быть совместимость по идее. Разве что они разные протоколы могут юзать (хотя скорее всего и там и там http & ws)
да, я просто был не уверен за константы, которые там в репе лежали, но вроде они по спецификации
источник

e

egoarka in GraphQL — русскоговорящее сообщество
Uxname
эм, ну если это по спецификации GraphQL сделано, то должна быть совместимость по идее. Разве что они разные протоколы могут юзать (хотя скорее всего и там и там http & ws)
а вот еще прям совсем plain websocket, гайд от prism'ы
https://github.com/prisma/prisma/blob/master/docs/1.9/04-Reference/03-Prisma-API/05-Subscriptions.md
источник

EK

Eugene Korobkov in GraphQL — русскоговорящее сообщество
petyappetrov
у Apollo нет ванилы
Эээм, странное утверждение.
const client = new ApolloClient(clientOptions);
client.query(queryOptions);
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Я вот тоже удивлен. apollo-client это либа у которой нетворк и кэш(стор). И можно крутить к любому ванилла клиенту.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
А вот react-apollo, vue-apollo и прочие, это обертки для ванильного apollo-client
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Eugene Korobkov
Эээм, странное утверждение.
const client = new ApolloClient(clientOptions);
client.query(queryOptions);
👍
источник

p

petyappetrov in GraphQL — русскоговорящее сообщество
Eugene Korobkov
Эээм, странное утверждение.
const client = new ApolloClient(clientOptions);
client.query(queryOptions);
простите, у меня реакт головного мозга
источник

p

petyappetrov in GraphQL — русскоговорящее сообщество
не увидел доку по ваниле и решил так
источник
2019 April 11

s

shashkov0 in GraphQL — русскоговорящее сообщество
Не знаю как грамотно описать, но столкнулся с такой проблемой. Есть квери (INDEX_QUERY), которая запрашивает следующие данные:

- me - залогиненный юзер (либо объект юзера, либо null, записан через фрагмент meFragment)
- stories - массив рассказов
- genres - жанры рассказов

Я вхожу в аккаунт и после мутации signIn, обновляю фрагмент Me, фрагмент успешно обновляется, но в INDEX_QUERY по-прежнему me: null
источник

s

shashkov0 in GraphQL — русскоговорящее сообщество
Использую apollo
источник

s

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

s

shashkov0 in GraphQL — русскоговорящее сообщество
Обновлять query не хочу, так как фрагмент me используется во многих местах и нужно, чтобы обновился только он
источник

s

shashkov0 in GraphQL — русскоговорящее сообщество
Походу понял, проблема была в том, что, когда не было юзера не было typename и поэтому нормально не обновлялось
источник

s

shashkov0 in GraphQL — русскоговорящее сообщество
Хм, пришлось добавить костыль. Когда юзер разлогинен, в ответ приходит пустой объект пользователя с id: -1, теперь всё ок работает
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Аполло под капотом у каждого типа ищет __typename и id (либо _id) и из них конструирует уникальный айдишник для хранения записи в своем плоском сторе (кэше).

Если id или _id нет, то он генерит свой. И они обычно не совпадают с тем что до этого ранее приходило в других запросах.

Поэтому хотите обновления записей, тащите __typename и id (либо _id если нет id)
источник

s

shashkov0 in GraphQL — русскоговорящее сообщество
А id же не обязательно, достаточно __typename
источник

P@

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

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
shashkov0
А id же не обязательно, достаточно __typename
query {
 me { // type User
   name
 }
}

и

mutation {
 login {
   me { // type User
     name
   }
 }
}

в сторе запись к типу User (me) будут записаны как разные объекты
источник

EW

Evan White in GraphQL — русскоговорящее сообщество
shashkov0
А id же не обязательно, достаточно __typename
не обязательно использовать id и __typename, вот тут подробно https://www.apollographql.com/docs/angular/features/cache-updates#normalization
источник