Как управлять кешем в Nestjs? - PullRequest
1 голос
/ 14 марта 2019

Я недавно прочитал документ nestjs и кое-что узнал из него.

Но я нашел кое-что, что озадачило меня.

В Techniques / Caching , документ показывает мне, как использовать декоратор, такой как @UseInterceptors(CacheInterceptor), на контроллере для кэширования его ответа (трек по умолчанию по маршруту).

Я написал тестовый пример и нашел его полезным. Но я не нашел никакого объяснения, чтобы показать, как очистить кеш. Это означает, что я должен ждать истечения срока действия кэша.

По моему мнению, хранилище кеша должно предоставлять API для очистки кеша по ключу, чтобы оно могло обновлять кеш при изменении данных (явно вызывая clear API).

Есть ли способ сделать это?

1 Ответ

1 голос
/ 14 марта 2019

Вы можете добавить базовый экземпляр cache-manager с помощью @Inject(CACHE_MANAGER).В экземпляре cache-manager можно затем вызвать метод del(key, cb), чтобы очистить кэш для указанного ключа, см. документы .

Пример

counter = 0;
constructor(@Inject(CACHE_MANAGER) private cacheManager) {}

// The first call increments to one, the preceding calls will be answered by the cache
// without incrementing the counter. Only after you clear the cache by calling /reset
// the counter will be incremented once again.
@Get()
@UseInterceptors(CacheInterceptor)
incrementCounter() {
  this.counter++;
  return this.counter;
}

// Call this endpoint to reset the cache for the route '/'
@Get('reset')
resetCache() {
  const routeToClear = '/';
  this.cacheManager.del(routeToClear, () => console.log('clear done'));
}

Edit nest-clear-cache

...