gpt4 book ai didi

typescript - 在 nestjs 中使用类验证器验证环境变量?

转载 作者:行者123 更新时间:2023-12-05 07:09:51 27 4
gpt4 key购买 nike

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

最佳答案

您可以使用 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 {}

现在您应该能够注入(inject) Environment 以访问所有环境变量。

关于typescript - 在 nestjs 中使用类验证器验证环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61439809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com