如何使Apollo Server RESTDataSource中的缓存无效

问题描述 投票:0回答:1

使用documentation中的简单“ Movies API”示例。我在ttl函数中添加了getMovie,以便将结果缓存10分钟。如何使updateMovie函数中的缓存无效?

const { RESTDataSource } = require('apollo-datasource-rest');

class MoviesAPI extends RESTDataSource {
  async getMovie(id) {
    return this.get(`movies/${id}`, {}, { cacheOptions: { ttl: 600 } });
  }

  async updateMovie(id, data) {
    const movie = await this.put(`movies/${id}`, data);

    // invalidate cache here?!

    return movie;
  }
}

我知道传递给ApolloServer的KeyValueCache接口提供了delete功能。但是,该对象似乎未在数据源中公开。它包装在HTTPCache内部,仅公开fetch函数。 KeyValueCache也包装在PrefixingKeyValueCache内,因此,假设内部实现为RESTDataSource,在没有一些讨厌的骇客的情况下,几乎不可能在缓存中包含某些内容。

使用文档中的简单“ Movies API”示例。我在getMovie函数中添加了一个ttl,以便将结果缓存10分钟。如何使updateMovie中的缓存无效...

caching apollo-server apollo-datasource-rest
1个回答
0
投票

似乎是我能找到的最好的解决方案,就是只保留HTTP缓存层,并使用单独的缓存层:

© www.soinside.com 2019 - 2024. All rights reserved.