У меня есть рабочий вызов мутации в моем приложении Angular для изменения некоторых полей объекта с помощью Apollo GraphQL. Часть вызова мутации включает в себя некоторые возвращаемые данные, которые Apollo свяжет с некоторым объектом, уже находящимся в его кеше, и обновит его новым возвращенным значением.
Я хотел бы вернуть только те поля, которые на самом деле мутировали чтобы избежать отправки больших пакетов по сети.
Мне удалось динамически сгенерировать документ мутации, который включает только изменяемые поля, и я передаю его в apollo.mutate({mutation: newMutation, ...})
, который возвращает наблюдаемое. Мутация срабатывает только после подписки на наблюдаемое. Я проверил, что компонент, использующий эту подписку, отписывается и уничтожается до вызова новой мутации.
Проблема в том, что Apollo кэширует документ мутации и отправляет первую мутацию (только с поля мутировали в первый раз) для всех звонков. Я подтвердил это, проверив вкладку «Сеть» моего веб-браузера.
Я пытался заставить Apollo прекратить кэшировать его, используя уникальные имена мутаций, добавляя дату и время. Я проверил, что переменные для мутации являются уникальными. Я пытался использовать фрагменты, но фрагменты также должны генерироваться динамически, и это та же проблема.
Кто-нибудь знает, что я делаю неправильно?