Size: a a a

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

2019 June 11

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Да, абсолютно все будет помечено @client но какая разница :D
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Лучше чем тот мой костыль с ApolloLinkSchema :) Который тащит гораздо менее легковестный GQL рантайм на клиент :)
источник

YP

Yevhenii Ponomar in GraphQL — русскоговорящее сообщество
а прокси не сервер ? )
если rest-api сделано на swagger\openapi то есть готовые решения, на сервере можно и кеш самих rest путей сделать и авторизацию сделать.

link-client может и удобен, прост для начала, если просто попробовать, но обвязывать даже три типа я бы не рискнул
источник

YP

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

Если все оборачивать в свои fetch\axios запросы
- на каждую мутацию нужно будет делать самом запрос в кеш, менять ее
- помнить о том как он ключи кеша обьектов\фрагментов делает
- плакать когда обещанной магии не выходит.

яб запутался после третьего типа с локальными резолверами
источник

YP

Yevhenii Ponomar in GraphQL — русскоговорящее сообщество
а вот собрать сервак и повесить на все fetch резолверов, и запихнуть на лямбду, имхо намного проще для головы
источник

YP

Yevhenii Ponomar in GraphQL — русскоговорящее сообщество
Andrii Los
Ну и код экземплы, которые я нашел уже после того как накостылил, вот.
https://github.com/hasura/client-side-graphql
а вот это в разы удобней link-rest будет,
Спасибо за линк
источник

BS

Bogdan Shelomanov in GraphQL — русскоговорящее сообщество
в общем пока нужно доку просмотреть всю, может что то в понимании прибавится
источник

A

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

A

Alexeyhh in GraphQL — русскоговорящее сообщество
Допустим у меня есть поле 1, но я не знаю будет ли существовать поле 2 или поле 3. Как в таком случае делать схему?
источник

VL

Vitaliy Leonov in GraphQL — русскоговорящее сообщество
не знаю как правильно, но у нас сервак возвращает null в поле, даже если у него есть вложенные поля. и дальше идет проверка на клиенте
источник

A

Alexeyhh in GraphQL — русскоговорящее сообщество
У меня идет допустим:
stage_1: {},
stage_2: {}

Что если я не буду знать сколько ступеней может быть? Если бы я написал их пять к примеру, то при случае когда меньше там будет null, а как предусмотреть какое угодно коилчество?
источник

U

Uxname in GraphQL — русскоговорящее сообщество
Alexeyhh
У меня идет допустим:
stage_1: {},
stage_2: {}

Что если я не буду знать сколько ступеней может быть? Если бы я написал их пять к примеру, то при случае когда меньше там будет null, а как предусмотреть какое угодно коилчество?
Используй массив объектов
источник

A

Alexeyhh in GraphQL — русскоговорящее сообщество
Точно, благодарю
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Andrii Los
Да, абсолютно все будет помечено @client но какая разница :D
Ой, не мешали бы вы локальный стейт (@client) с серверным кешом. Жуткая идея, череватая в будущем солидным рефакторингом.

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

Резюме: используйте два стора. Аполло/Релей для кеша серверных данных. И там какой-нить Redux, EventEmitter, React.State/Hook – для клиентского состояния.

Вобщем аккуратно с этим @client, наверное есть вещи где он будет хорош, но в целом по больнице его лучше не использовать.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Ой, не мешали бы вы локальный стейт (@client) с серверным кешом. Жуткая идея, череватая в будущем солидным рефакторингом.

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

Резюме: используйте два стора. Аполло/Релей для кеша серверных данных. И там какой-нить Redux, EventEmitter, React.State/Hook – для клиентского состояния.

Вобщем аккуратно с этим @client, наверное есть вещи где он будет хорош, но в целом по больнице его лучше не использовать.
Паша, ну как бы ApolloLinkSchema по сути тот же клиентский кэш.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Я и не говорю, что надо исопльзовать Аполло для UI стейта
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Но как клиентский графкюель сервер пойдет лучше, чем Apollo Link Schema которая тяжелая.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Например вам надо облагородить прилетевшие данные с сервера - то @client будет хорошо.

Но не храните клиентское состояние в кеше аполловском.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Да, но если у вас там только данные и больше ничего, то ок :) Т.е. GraphQL сервер на клиенте, то ок, ибо лучше чем ApolloLinkSchema костыль.
Но для глобального UI стейта юзайте редакс 7.1 версии (хуки завезли сегодня), или обычный, прекрасный, нативный React Context API :)
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
А ну и Mobx c MST.
источник