【问题标题】:Nestjs | ConfigModule | Use (or inject) a service inside `validate` function巢穴 |配置模块 |在 `validate` 函数中使用(或注入)服务
【发布时间】:2021-07-24 22:18:56
【问题描述】:
import { validate } from './env.validation';

@Module({
  imports: [
    ConfigModule.forRoot({
      validate,
    }),
  ],
})
export class AppModule {}

如何使用validate 函数中的某些服务?例如Logger 服务?
服务可以注入validate吗?

【问题讨论】:

标签: node.js nestjs nestjs-config


【解决方案1】:

正如您在源代码 here 中看到的那样,无法在此 validate 函数中注入提供程序,因为它只是一个不了解 Nest DI 系统的常规回调。

【讨论】:

  • 我正在尝试尽可能多地使用nestjs ConfigModule、它的验证机制和它的服务,但也能够全面使用其他自定义服务。您对如何解决这个问题有什么建议吗?
  • 我仍然不清楚如何有效地使用 ConfigModule 并能够在验证调用期间出现问题时记录消息。
  • 那个lib在验证失败的时候会报错,app不会启动。请参阅github.com/nestjs/config/blob/…,也许您可​​以以某种方式使用该错误来做您想做的事情,或者构建您自己的ConfigModule:/
【解决方案2】:

标题

在你的情况下,我会构建一个类来实现ValidatorConstraintInterface,它来自类验证器。然后,您可以使用此问题的答案来注入依赖项: https://github.com/nestjs/nest/issues/528

TL:DR 在您的 bootstrap() 上使用它并实现 ValidatorConstraintInterface,因此您可以注入依赖项:

useContainer(app.select(AppModule), {fallbackOnErrors: true});

【讨论】:

  • 如何将建议的新服务的 validate 方法传递给 ConfigModule.forRoot({ validate })?
猜你喜欢
  • 2021-01-24
  • 2020-06-10
  • 1970-01-01
  • 2020-04-08
  • 2020-10-26
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多