Oluşturma veya güncelleme sırasında tetiklenen bir yükselme sorgum var. Güncellemede, Apollo sonucu önbelleğe entegre eder, ancak oluşturmadan yaratır. İşte Apollo İstemcisi: Upsert mutasyonu yalnızca güncelleme sırasında önbelleği değiştirir, ancak oluşturulmuyor
sorgusu:export const UPSERT_NOTE_MUTATION = gql`
mutation upsertNote($id: ID, $body: String) {
upsertNote(id: $id, body: $body) {
id
body
}
}`
Müvekkilim:
const graphqlClient = new ApolloClient({
networkInterface,
reduxRootSelector: 'apiStore',
dataIdFromObject: ({ id }) => id
});
sunucudan yanıt aynıdır: Her iki id
ve body
döndürülür fakat Apollo yeni kimlikleri taşımıyorsa data
önbellek nesnesini otomatik olarak.
Apollo'nun, daha sonraki bir getirmeyi tetiklemeden data
'a yeni Nesneleri otomatik olarak eklemesi mümkün mü? İşte
GÜNCELLEME
belgelerine göre, fonksiyon updateQueries
bana listeye yeni bir unsur itmesine izin gerekiyordu Özkaynaklarıma tekrar sorgulama yapmak zorunda kalmadan varlıkların tekrarı.
Bu işlev çalıştırılır, ancak işlev tarafından döndürülen her şey tamamen yok sayılır ve önbellek değiştirilmez.
Böyle bir şey yapsalar bile:
updateQueries: {
getUserAssets: (previousQueryResult, { mutationResult }) => {
return {};
}
}
Hiçbir şey değiştirir.
GÜNCELLEME 2.
Hala benim varlıklar listesine güncellemek için alınamıyor. updateQueries
İçinde
, işte previousQueryResult
neye benzediği:
updateQueries: {
getUserAssets: (previousQueryResult, { mutationResult }) => {
return {
assets: []
.concat(mutationResult.data.upsertAsset)
.concat(previousQueryResult.assets)
}
}
}
Ama ne olursa olsun ben dönmek ne, veri deposu yenilemez: Referans olarak
, burada her biri asset
'un neye benzediği:
üzgünüm. Sadece güncellemem # 2 ile sorumu güncelliyorum. Yine de maalesef düzgün çalışması için bunu alamıyorum. Cevabınız için –