Node.js /打字稿通过多重参数验证

时间:2020-11-11 09:54:36

标签: javascript node.js typescript

我有以下功能,需要获取以下参数

        try {
         await setData(generator.eventType, generator.eventVersion, generator.uri, ms.data.data.result.name, generator.app)

        } catch (error) {
            logger.error("error occured : ", error)
            return error
        }
    }

现在,如果其中一个属性没有像“未定”这样的数据,则功能setData将不起作用。

要提前处理它,我需要为每个属性创建 ugly if语句(传递给函数),以检查是否提供了该值,否则抛出错误,

我的问题是在typescript / nodejs中是否有 cleaner 方法来处理验证?

1 个答案:

答案 0 :(得分:0)

您可能想看看https://github.com/scopsy/typescript-param-validator

import { Validator, Validate } from 'typescript-param-validator';
import { IsDate, IsNotEmpty, MaxDate, IsEmail, Length } from 'class-validators';

class DataDto {
  @IsNotEmpty()
  @IsEmail()
  email: string;
  
  @Length(10, 200)
  @IsNotEmpty()
  description: string;
  
  @IsDate()
  @IsNotEmpty()
  @MaxDate(new Date())
  birthDate: Date;
}

class TestClass {
  @Validate()
  methodName(@Validator() data: DataDto) {
    
  }

  @Validate()
  serverControllerEndpoint(@Validator(DataDto, 'body') req: Request) {
    
  }
}