【问题标题】:Environment variables validation with class-validator in nestjs?在nestjs中使用类验证器验证环境变量?
【发布时间】:2020-08-09 21:10:34
【问题描述】:

如何通过 nestjs 中的类验证器验证我的环境变量?官方文档中没有示例,只有joi。但是对于 DTO,您几乎可以使用类验证器,因为接口不会在运行时编译等。而且我不想在我的应用程序中使用两个不同的验证器。

【问题讨论】:

  • 能否提供一个环境变量示例以及如何验证它们?

标签: typescript environment-variables nestjs class-validator class-transformer


【解决方案1】:

您可以使用class-validator 创建环境架构类:

// environment.ts
import {Injectable} from '@nestjs/common';
import {IsFQDN, IsString} from 'class-validator';

@Injectable()
export class Environment {

    @IsFQDN()
    DATABASE_HOST: string;

    @IsString()
    DATABASE_USERNAME: string;

    @IsString()
    DATABASE_PASSWORD: string;

}

然后将自定义提供程序添加到您的模块,该提供程序将验证 process.envEnvironment

// app.module.ts
import {Module} from '@nestjs/common';
import {transformAndValidateSync} from 'class-transformer-validator';

import {Environment} from './environment';

@Module({
  imports: [
      // Imports
  ],
  controllers: [
      // Controllers
  ],
  providers: [
      {provide: Environment, useValue: transformAndValidateSync(Environment, process.env)}
  ],
})
export class AppModule {}

现在您应该能够注入 Environment 来访问您的所有环境变量。

【讨论】:

    猜你喜欢
    • 2022-08-02
    • 2019-08-29
    • 2021-04-22
    • 1970-01-01
    • 2021-03-09
    • 2021-02-03
    • 2022-01-06
    • 2019-05-16
    • 1970-01-01
    相关资源
    最近更新 更多