如何将配置从配置服务传递到 Nest.js 装饰器?

Tat*_*ava 17 node.js nestjs

我将 @UseInterceptors 与 @nestjs/platform-express 中的 FilesInterceptor 一起使用。FilesInterceptor 允许我传递一些配置(例如文件存储文件夹)。我想传递的不是精确值(例如“public”),而是从 configService 获取它们。

从这个答案(/sf/answers/4187966611/)我明白为什么从 UseInterceptors 调用 this.configService 会导致未定义。

@UseInterceptors(FilesInterceptor('cat_pic', 2, this.configService.get('storageConfigs')))
Run Code Online (Sandbox Code Playgroud)

那么如何将配置传递给 FilesInterceptor 呢?或者,如果我将文件拦截器功能移至单独的模块,如何访问服务?

Jay*_*iel 7

config()您可以选择的一种选择是从包中调用dotenv以将所有内容加载process.env到您的main.ts. 您仍然可以在其他地方使用ConfigModuleand ,但在装饰器中您将使用该变量。ConfigServiceprocess.env.storageConfigs

另一个选择是像@golevelup/profiguration这样的包,它是一个配置服务,由于其编写方式,可以在装饰器中使用。

  • @miek仅仅因为_class实例_可以访问注入的配置服务并不意味着该类的装饰器可以。它非常依赖于装饰器的编写方式,并且在许多情况下,像“@UseInterceptors()”一样,“ConfigService”**无法**被访问 (2认同)