0

チャット アプリに 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のメッセージがあります

ここに画像の説明を入力

4

1 に答える 1