在nestjs中使用类验证器验证环境变量?
Posted
技术标签:
【中文标题】在nestjs中使用类验证器验证环境变量?【英文标题】:Environment variables validation with class-validator in nestjs? 【发布时间】:2020-08-09 21:10:34 【问题描述】:如何通过 nestjs 中的类验证器验证我的环境变量?官方文档中没有示例,只有joi。但是对于 DTO,您几乎可以使用类验证器,因为接口不会在运行时编译等。而且我不想在我的应用程序中使用两个不同的验证器。
【问题讨论】:
能否提供一个环境变量示例以及如何验证它们? 【参考方案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.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
来访问您的所有环境变量。
【讨论】:
以上是关于在nestjs中使用类验证器验证环境变量?的主要内容,如果未能解决你的问题,请参考以下文章