【发布时间】:2020-06-13 02:48:11
【问题描述】:
我正在使用 nestjs 并且刚刚安装了 cache-manager 模块,并且正在尝试缓存来自服务调用的响应。
我在一个示例模块(sample.module.ts)中注册了缓存模块:
import { CacheInterceptor, CacheModule, Module } from '@nestjs/common';
import { SampleService } from './sample.service';
import { APP_INTERCEPTOR } from '@nestjs/core';
import * as redisStore from 'cache-manager-redis-store';
@Module({
imports: [
CacheModule.register({
ttl: 10,
store: redisStore,
host: 'localhost',
port: 6379,
}),
],
providers: [
SampleService,
{
provide: APP_INTERCEPTOR,
useClass: CacheInterceptor,
}
],
exports: [SampleService],
})
export class SampleModule {}
然后在我的服务中(sample.service.ts):
@Injectable()
export class SampleService {
@UseInterceptors(CacheInterceptor)
@CacheKey('findAll')
async findAll() {
// Make external API call
}
}
查看 redis,我可以看到服务方法调用没有缓存任何内容。如果我对控制器使用相同的方法,那么一切正常,我可以在我的 redis 数据库中看到缓存的条目。我认为没有办法在nestjs中缓存单个服务方法调用。
看了documentation看来我只能将这种方法用于控制器、微服务和websockets,而不能用于普通服务?
【问题讨论】:
标签: node.js typescript caching service nestjs