チャット アプリに apollo クライアント キャッシュを使用すると、論理エラーが発生します。
たとえば、最初に部屋のキャッシュに 10 件のメッセージが表示され、今度は別の部屋をクリックすると、最後に訪れた部屋のメッセージが表示されますか? 私のキャッシュ
const cache = new InMemoryCache({
typePolicies: {
Query: {
fields: {
lastRooms: offsetLimitPagination(),
lastTopics: offsetLimitPagination(),
topicDetail: offsetLimitPagination(),
// chatDetail: offsetLimitPagination(),
chatDetail: {
keyArgs:['limit'],
merge(existing=[], incoming=[], { readField }) {
try {
let merged = existing
const existingIdSet = new Set(merged.map(message => readField("_id", message)));
if (incoming) {
incoming = incoming.filter(message => !existingIdSet.has(readField("_id", message)))
}
return [...merged, ...incoming]
} catch (error) {
console.log("Apollo Cache chatDetail Query fields Erorr:", error);
}
}
},
}
}
},
});
これは部屋です
これは最初の部屋で、メッセージは 2 つだけです
これはK3ルームで、16のメッセージがあります