有没有一种方法可以使用变量值在apollo客户端上缓存查询结果?

时间:2020-05-15 08:28:21

标签: angular caching graphql progressive-web-apps apollo-client

我创建了一个渐进式Web应用程序(PWA),该应用程序调用了graphQl服务器,并使用Apollo客户端(角度)进行了即时查询和修改。 我有以下查询:

query GetAreas($connection: String!) {
    areas(connection: $connection) {
        id
        description: description
    }
}

我的graphqlModule如下所示:

@NgModule({
    exports: [
        HttpClientModule,
        ApolloModule,
        HttpLinkModule
    ],
    providers: [{
        provide: APOLLO_OPTIONS,
        useFactory(httpLink: HttpLink) {
            const cache = new InMemoryCache();

            persistCache({
                cache,
                storage: window.localStorage,
            });

            return {
                link: httpLink.create({uri}),
                cache
            };
        },
        deps: [HttpLink]
    }]
})
export class GraphQLModule {
}

对于不同的connection变量,返回的区域将有所不同。 问题是,当尝试使用阿波罗缓存时,此查询将缓存返回的第一个值,但是当我使用不同的connection进行另一个查询时,它将获取另一个{{1}的先前缓存的查询结果}变量。

阿波罗文档仅讨论缓存connection__typename_id的问题。

有没有办法做到这一点?要缓存不同的getAreas(具有不同的id变量)?也许使用某种cacheRedirect?

0 个答案:

没有答案