Я использую InMemoryCache для Apollo GraphQL в JavaScript.
У меня есть вопрос о том, как работает нормализация при кэшировании.Я реализую стандартный шаблон списка / сведений, чтобы отобразить список клиентов, а затем нажмите один из них, чтобы отобразить сведения об этом клиенте.
В запросе GraphQL со списком извлекается некоторая базовая информация о клиенте, но запрос о подробностяхизвлекает гораздо больше информации.
Оба запроса включают __typename
и id
.
. Читая документацию, я ожидаю, что способ, которым Аполлон нормализует результаты, когда я делаю watchQuery
с fetchPolicy, равным «cache-and-network», он должен вернуть частично заполненный результат (кэшированный из запроса списка), а затем позже вернуть полностью заполненный результат (из запроса сведений, возвращаемого с сервера).
Однако я не вижу, чтобы это произошло.Единственный раз, когда кэш заполняется для подробного запроса, это после того, как я уже получил этот точный подробный запрос.
Это здорово, но я бы хотел, чтобы он возвращал частично кэшированные результаты, которые были нормализованы из запроса списка.
Правильно ли мое понимание Apollo, что он должен возвращать этот частично нормализованный результат кэширования?Или я просто неправильно понимаю, как работает кэширование Apollo?
Спасибо