首页 > 解决方案 > 如何将配置从配置服务传递给 Nest.js 装饰器?

问题描述

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

从这个答案(https://stackoverflow.com/a/59828094/13128344)我明白为什么从 UseInterceptors 调用 this.configService 会导致未定义。

@UseInterceptors(FilesInterceptor('cat_pic', 2, this.configService.get('storageConfigs')))

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

标签: node.jsnestjs

解决方案


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

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


推荐阅读