使用文档中的简单“电影 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;
}
}
我知道KeyValueCache
传递给 ApolloServer 的接口提供了一个delete
功能。但是,此对象似乎并未在数据源中公开。它被包裹在里面HTTPCache
,它只暴露一个fetch
函数。KeyValueCache
也被包裹在 a中PrefixingKeyValueCache
,因此假设RESTDataSource
.