如何在nestjs中通过class-validator验证我的环境变量?在官方文档中没有示例,只有joi。但是对于DTO,你很大程度上受限于类验证器,因为接口不会在运行时编译,等等。我不想在我的应用程序中使用两个不同的验证器。
发布于 2021-04-09 01:56:22
您可以使用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;
}然后,向您的模块添加一个自定义提供程序,该提供程序将根据Environment验证process.env。
// 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来访问所有环境变量了。
https://stackoverflow.com/questions/61439809
复制相似问题