我正在使用apollo-client进行graphql调用,并在包apollo-client中添加了状态管理功能。在graphql模块中,将分配给InMemoryCache的缓存变量和客户端变量导出。客户端变量导入到组件中,因此默认执行get调用后,数据在client.cache.data中可用,但我想在保存和删除graphql操作成功后更新客户端缓存回调
这是我的graphql.module.ts:
import {NgModule} from '@angular/core';
import {ApolloModule, APOLLO_OPTIONS} from 'apollo-angular';
import { ApolloClient } from 'apollo-client';
import {InMemoryCache} from 'apollo-cache-inmemory';
import { HttpLink } from 'apollo-link-http';
const cache = new InMemoryCache();
const link = new HttpLink({
uri:'https://api.graph.cool/simple/v1/ciyz901en4j590185wkmexyex'
});
export var client = new ApolloClient({
cache,
link
});
@NgModule({
})
和我的服务呼叫实施
client
.query({
query: gql`
{
fORoomTypes()
{
nodes
{
roomTypeId
roomType
ratSingle
ratDouble
ratExtra
statu
}
}
}
`,
})
.then(result => {
callback(result);
});
在回调client.cache.data包含数据之后,我想使用缓存查询调用此数据,并且想要自动更新缓存 这是我的保存服务实现
const post = gql`
mutation
{
saveRtype(rt:
{
rty:
{
rt:"Club room"
rat:4000
cchub:4500
ext:800
statu:1
}
traCheck:1
}
)
}
`
client.mutate({
mutation: post
}).then((data) => {
callback(data)
});
答案 0 :(得分:0)
我只将apollo客户端与React一起使用,但希望可以阐明它的工作方式。为了使此操作“自动”发生,您要么需要调用refetchQueries即可在突变后重新获取fORoomType,也可以手动更新缓存。我注意到您的回复未返回id属性,因此它将如何知道要更新哪个属性?如果存在不称为“ id”的标识符,请在this documentation之后注册。
这里是您想要的文档的常规链接
https://www.apollographql.com/docs/angular/features/cache-updates/