Size: a a a

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

2019 April 15

a

akaSybe in GraphQL — русскоговорящее сообщество
в графкл роль дтошек будут выполнять типы определенные в схеме, очевидно что они будут отличаться от рестовых
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
в более-менее крупных проектах
источник

s

shashkov0 in GraphQL — русскоговорящее сообщество
Как правильно обновить аполло кэш в такой ситуации: есть 3 квери для запроса рассказов - это рассказы написанные юзером, рассказы написанные залогиненым юзером, все рассказы, которые находятся на главной страницы. После написания рассказа мне нужно обновить все эти квери, то есть добавить в них новый рассказ, как это проще всего можно сделать?
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
в аполло кэше данные хранятся в виде плоского списка
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
то есть все рассказы из трех кверей (если они одного типа) будут лежать в одном списке
источник

s

shashkov0 in GraphQL — русскоговорящее сообщество
Сейчас они так лежат, я сделал добавление рассказа через writeFragment:

cache.writeFragment({
               id: Story:${mutationResult.data.createStory.id},
               fragment: storyFragment,
               fragmentName: 'story',
               data: mutationResult.data.createStory,
             })

Новый фрагмент добавляется, а списки не обновляются
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
А в mutationResult.data.createStory имеется __typename?
источник

e

egoarka in GraphQL — русскоговорящее сообщество
shashkov0
Сейчас они так лежат, я сделал добавление рассказа через writeFragment:

cache.writeFragment({
               id: Story:${mutationResult.data.createStory.id},
               fragment: storyFragment,
               fragmentName: 'story',
               data: mutationResult.data.createStory,
             })

Новый фрагмент добавляется, а списки не обновляются
нужно еще сами квери обновить
источник

s

shashkov0 in GraphQL — русскоговорящее сообщество
akaSybe
А в mutationResult.data.createStory имеется __typename?
Да
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
Вы хотите одним запросом к бд получить все?
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
как вариант можно сделать так:
- в резолвере основного объекта добавить код getCollection(model.id)
- полученную коллекцию смаппить на тип коллекции в dto
- удалить резолвер поля коллекции (т.к. она заполняется в резолвере основного объекта)
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
из минусов тут то что коллекция будет запрашиваться всегда, независимо от того запрашивают ли поле коллекции в квери
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
есть ещё вариант, но имхо он выглядит достаточно костыльно
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
засунуть эту модель в параметр контекста в основном резолвере
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
в резолвере поля коллекции достать из контекста модель и вызвать метод получения коллекции
источник

a

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

a

akaSybe in GraphQL — русскоговорящее сообщество
третий параметр context
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
не знаю, есть ли такой же в java реалзиации
источник

A

Alexander in GraphQL — русскоговорящее сообщество
вложенные мутации это круто. а есть ли способ передать аргумент из родительской в дочернюю мутацию?
mutation {
 author(id: 1) {
   book(id: 4) {
     edit(title: "another title") {
       id
       title
     }
   }
 }
}


интересно было бы узнать, как такое можно сделать в graphene-python
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
попробуйте спросить у авторов библиотеки
источник