【问题标题】:Can I use NestJS Config Service outside a module?我可以在模块外使用 NestJS 配置服务吗?
【发布时间】:2021-12-19 00:26:47
【问题描述】:

我有一个与任何嵌套模块都不相关的类。我想在这个类中导入和使用我的 ConfigService。我可以在不将此类添加到任何模块的情况下执行此操作,还是需要一个模块才能使用嵌套生成的类?

谢谢

【问题讨论】:

  • ConfigService from @nestjs/config 的存在是为了将 dotenv+joi 与 Nestjs 集成。我不建议在 Nestjs 模块之外使用它

标签: node.js typescript configuration nestjs


【解决方案1】:

你可以像下面这样在类上创建

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class AppConfig {
  static service: ConfigService;

  constructor(service: ConfigService) {
    AppConfig.service = service;
  }

  static get(key: string): any {
    return AppConfig.service.get(key);
  }
}

在你的根模块AppModule中添加这个类作为提供者,

...
providers: [AppConfig],
...

现在一旦启动应用程序,您可以在应用程序内的任何地方使用它,

AppConfig.get('database.port');

希望这有帮助!

【讨论】:

  • 确实有帮助。谢谢!
【解决方案2】:

是的,您可以使用 app.get 方法从 Nest.js DI 容器中获取任何内容。

例如

const configService = app.get(ConfigService)

【讨论】:

  • 嗯,但是如果我在此类上下文中无权访问应用程序怎么办?我是否应该只使用new ConfigService() 就能让它工作?
  • 假设你的类没有需要注入的依赖,那应该没问题。但如果是这样,那么您需要 Nest.JS 应用程序的上下文来为您执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 2011-05-16
  • 2021-10-29
  • 2014-01-01
  • 1970-01-01
相关资源
最近更新 更多