3

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

4

1 回答 1

0

您可以使用以下方法创建环境架构类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.env针对Environment.

// 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以访问所有环境变量。

于 2021-04-08T17:56:22.260 回答