Итак, у меня есть запрос сеанса, который я использую для загрузки при входе в систему.Поскольку нагрузка была слишком большой (да, загружается тонна данных приложения), я много урезал эту «сессию».НО, проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда я выполняю мутацию, я не могу обновить сеанс, потому что кажется, что ТОЛЬКО объявленные мной поля обновлены, а все остальное из мутации игнорируется.
Примечание: Я хочу обновить мутацию на стороне клиента.
Итак, у меня есть что-то вроде этого:
@graphql(SESSION_QUERY)
class Foo etc....
Теперь этот сеанс имеет ограниченные данные в своей схеме, например:
query Session {
session {
id
user_id
first_name
last_name
products {
shoes {
id
sizes
}
pants {
id
sizes
}
shirts {
id
sizes
}
}
}
объем данных огромен, так что я действительно урезал его.Теперь мои мутации создают «новый» элемент на основе того, что «добавляет» пользователь.
Вот проблема, скажем, пользователь «создал рубашку», но с этой мутацией пользователь создает «размеры»"," цены "," коды купонов "и т. д., поэтому я хочу, чтобы мой массив" рубашка "в этом случае обновлялся ala ..
update: (store: ApolloStore, results: *) => {
const data = store.readQuery({ query: SESSION_QUERY });
const products = data.session.products[productType] || [];
data.session.products[productType] =
products.concat(results.data['createProductShirt']);
store.writeQuery({ query: SESSION_QUERY, data });
}
console.logging до и после записина самом деле показать обновление, НО сеанс фактически никогда не обновляется.Кажется, он просто фильтруется для обновления только идентификатора и размеров.Мне нужно обновить возвращаемый набор ВОЗВРАТА.
В основном, когда мой компонент получает новые реквизиты, обновление мутации не происходит.
Есть ли способ обновить этот сеанс, даже когда конкретные значенияне определено в схеме?
Я бы предпочел не использовать избыточность, и мое использование кажется не таким уклончивым, как использование apollo-link-state (что кажется немного сложным).