dataIdFromObject 错误地覆盖来自其他查询的缓存



所以使用dataIdFromObject如下:

cache: new InMemoryCache({
dataIdFromObject: object => {
switch (object.__typename) {
case 'AppKey':
return object.appKeyId
case 'App':
return object.appId
default:
return defaultDataIdFromObject(object)
}
},
})

是一些如何从应用程序重写appKey中的第一个 object.name,有时反之亦然。例如

data.getAppKeys = [{ appKeyId: 1, name: 'My App' }, ...correctObjects]后端何时将密钥{appKeyId: 1, name: 'myAppKey'}dataIdFromObject注释掉任何一个case时不会发生这种情况。

如何让缓存重写正确的查询?

您需要有一个超越数字的唯一标识符,因为数字会匹配并且缓存会错误地覆盖,解决方案是将__typename添加到数据标识符中,如下所示:

dataIdFromObject: object => {
const getID = (typename, id) => `${typename}_${id}`
switch (object.__typename) {
case 'AppKey':
return getID(object.__typename, object.appKeyId)
case 'App':
return getID(object.__typename, object.appId)
default:
return getId(object.__typename, defaultDataIdFromObject(object))
}
},
})

最新更新