Используя простой пример "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;
}
}
Я знаю, что интерфейс KeyValueCache
, который передается в ApolloServer, предоставляет функцию delete
. Тем не менее, этот объект, похоже, не выставляется в источниках данных. Он обернут внутри HTTPCache
, который предоставляет только функцию fetch
. KeyValueCache
также заключен в PrefixingKeyValueCache
, поэтому кажется, что невозможно что-то внедрить в кеш, без каких-либо неприятных хаков, предполагая внутреннюю реализацию RESTDataSource
.