#reactjs #caching #apollo
#reactjs #кэширование #apollo
Вопрос:
У меня есть тип объекта entity
, который может быть связан с другим типом объекта something
через список entityInstances
. Также something
находится в списке внутри somethingContainer
:
query somethingContainer {
id
somethings {
id
entityInstances {
id
entity {
id
}
}
}
}
entity
s могут отображаться в нескольких entityInstance
s, но экземпляры уникальны для их something
s, как и something
s для их контейнеров.
Проблема возникает при удалении entity
. Затем необходимо обновить каждый из запросов, содержащих объект (вложенный в 3 слоя), но не очевидно, какие это будут запросы.
Я изучил использование cache.modify
, но не вижу, как его использовать, не зная идентификаторов соответствующих entityInstance
файлов (или идентификаторов соответствующих something
файлов).
Прежде чем я использовал небольшой мягкий метод удаления, в котором я использую writeFragment
для установки id
соответствующих entity
значений null
и отфильтровывания их в компонентах. Но это никогда не казалось хорошим решением, и это еще хуже с обновлением до Apollo 3 (мы регистрируем ошибку всякий раз, когда запрос или мутация не имеют id
, что после обновления также регистрируется writeFragment
).
Другой вариант — сделать что-то вроде повторного запуска всех somethingContainer
запросов, но это может стать дорогостоящим.
Есть идеи?