Apollo乐观用户界面更新,具有不同的ID字段名
我正在尝试利用Apollo的乐观更新功能(在React原生应用程序中)。不幸的是,据我所知,只有当您正在更新使用名为“id”的字段作为主键的记录时,这种方法才有效。不幸的是,在许多情况下,该字段具有不同的名称。有什么方法可以让Apollo使用不同的id字段名吗?假设您使用Apollo的Apollo乐观用户界面更新,具有不同的ID字段名,apollo,react-apollo,Apollo,React Apollo,我正在尝试利用Apollo的乐观更新功能(在React原生应用程序中)。不幸的是,据我所知,只有当您正在更新使用名为“id”的字段作为主键的记录时,这种方法才有效。不幸的是,在许多情况下,该字段具有不同的名称。有什么方法可以让Apollo使用不同的id字段名吗?假设您使用Apollo的InMemoryCache在初始化缓存时,您可以传递一个可以返回id值的密码。始终使用id的默认值如下所示: import { InMemoryCache } from 'apollo-cache-inmemory
InMemoryCache
在初始化缓存时,您可以传递一个可以返回id
值的密码。始终使用id
的默认值如下所示:
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
dataIdFromObject: o => o.id
});
要改变这一点,您可以创建一个函数来检查传入对象中的\uuu 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,
}
}
});
假设您使用apollo的
内存缓存
,您可以在初始化缓存时传递一个可以返回id值的密码。始终使用id
的默认值如下所示:
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
dataIdFromObject: o => o.id
});
要改变这一点,您可以创建一个函数来检查传入对象中的\uuu 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,
}
}
});
我使用阿波罗与AWS Appsync,但这与它的缓存选项,谢谢!我使用阿波罗与AWS Appsync,但这与它的缓存选项,谢谢!