Как избежать перегрузки с помощью подписок Apollo GraphQL - PullRequest
0 голосов
/ 08 января 2019

Во время интеграции подписок GraphQL в реагирующий проект я столкнулся с неожиданным поведением, которое оказалось неопределенным для данных, ранее загруженных запросом, для заполнения подробного представления при получении обновлений из подписки. После многих исследований (здесь / docs / questions / blogs / apollo source code) очевидная причина заключается в том, что «форма» запрашиваемых полей должна совпадать как для запроса, так и для подписки.

В моем случае (и, конечно, это действительно распространенное использование) запрос, который заполняет подробный вид, имеет много полей, которые не меняются, и подписка возвращает только соответствующие поля. Поскольку этот подход, ИМО, каким он должен быть, мой вопрос:

Как избежать чрезмерной выборки для подписок apollo gql, позволяя объединить обновленные (и соответствующие) поля подписки с предыдущим результатом запроса?

Больше фона: Я использую компонент «Подписка» и также попробовал subscribeToMore, но для обоих apollo обновляет магазин, прежде чем я смогу самостоятельно обновлять себя, это приводит к неопределенности. Используя инструменты apollo, я вижу, что кэшированный объект (по типу + id) успешно объединен, что не так в ROOT_QUERY.[name_of_the_query]

...