Mam zapytanie upsert, które zostanie uruchomione podczas tworzenia lub aktualizacji. Po aktualizacji Apollo integruje wynik w pamięci podręcznej, ale w momencie jej utworzenia nie.Klient Apollo: mutacja typu "upsert" modyfikuje pamięć podręczną tylko podczas aktualizacji, ale nie przy tworzeniu
Oto zapytanie:
export const UPSERT_NOTE_MUTATION = gql`
mutation upsertNote($id: ID, $body: String) {
upsertNote(id: $id, body: $body) {
id
body
}
}`
Mój klient:
const graphqlClient = new ApolloClient({
networkInterface,
reduxRootSelector: 'apiStore',
dataIdFromObject: ({ id }) => id
});
Odpowiedź z serwera jest identyczna: Zarówno id
i body
są zwracane ale Apollo nie jest dodawanie nowych identyfikatorów do data
obiekt pamięci podręcznej automatycznie.
Czy można automatycznie dodawać nowe obiekty do data
bez uruchamiania późniejszego pobierania?
Oto co mój magazyn danych wygląda następująco:
UPDATE
Zgodnie z dokumentacją, funkcja updateQueries
ma pozwolić mi wcisnąć nowy element do mojej listy zasobów bez konieczności ponownego wyzwalania zapytania o źródło pochodzenia.
Funkcja zostaje wykonana, ale to, co zwraca funkcja, jest całkowicie ignorowane, a pamięć podręczna nie jest modyfikowana.
Nawet jeśli robię coś takiego:
updateQueries: {
getUserAssets: (previousQueryResult, { mutationResult }) => {
return {};
}
}
Nic się nie zmienia.
UPDATE # 2
nadal nie można uzyskać wykaz mój majątek, aby zaktualizować.
Wewnątrz updateQueries
, tutaj jest to, co mój previousQueryResult
wygląda następująco:
updateQueries: {
getUserAssets: (previousQueryResult, { mutationResult }) => {
return {
assets: []
.concat(mutationResult.data.upsertAsset)
.concat(previousQueryResult.assets)
}
}
}
ale niezależnie od tego, co wrócę, magazyn danych nie odświeża:
Dla porównania, tutaj jest jak wyglądają poszczególne asset
:
Przepraszamy za opóźnienie w odpowiedzi Dhaivat. Właśnie aktualizuję moje pytanie z aktualizacją nr 2. Nadal niestety nie można tego uruchomić poprawnie. –