我正在尝试利用https://www.apollographql.com/docs/react/features/optimistic-ui.html中描述的Apollo的乐观更新功能(在React-Native应用程序中)。不幸的是,据我所知,这仅在您更新使用名为“ id”的字段作为其主键的记录时才有效。不幸的是,在很多情况下,该字段使用不同的名称。有什么方法可以告诉Apollo使用其他id字段名称?
答案 0 :(得分:2)
假设您使用阿波罗的InMemoryCache
,则可以通过dataIdFromObject来初始化缓存时返回id
的值。始终使用id
的默认值看起来像这样:
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
dataIdFromObject: o => o.id
});
要更改此设置,您可以创建一个函数来检查传入对象中的.__typename
键,以根据GraphQL类型返回正确的字段;
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
dataIdFromObject: ({__typename, id, ...rest}) => {
switch(__typename){
case 'Foo': return rest.foo,
case 'Bar': return rest.bar,
default: return id,
}
}
});