Javascript 提取和验证
我正在从事一个基于nest.js框架的项目 以下是my函数的一个片段:Javascript 提取和验证,javascript,typescript,nestjs,Javascript,Typescript,Nestjs,我正在从事一个基于nest.js框架的项目 以下是my函数的一个片段: @Post('beneficiaries/:beneficiaryId/bankDetails') @HttpCode(HttpStatus.OK) async addBankDetails(@Param('beneficiaryId', new ValidationPipe()) beneficiaryHash: BeneficiaryHashIdDto, @Body() body, @Headers() he
@Post('beneficiaries/:beneficiaryId/bankDetails')
@HttpCode(HttpStatus.OK)
async addBankDetails(@Param('beneficiaryId', new ValidationPipe()) beneficiaryHash: BeneficiaryHashIdDto, @Body() body, @Headers() headers) {
const beneficiary = await this.beneficiaryService.getBeneficiaryIdFromHash(beneficiaryHash, ['beneficiaryId', 'currencyCode', 'countryCode']);
let routingOptions = await this.beneficiaryService.getBeneficiaryRoutingConfig(beneficiary.beneficiaryId, pick(headers, GET_HEADERS_LIST));
routingOptions = lmap(routingOptions, partialRight(pick, ['bankDetail', 'beneficiaryRoutingConfigId']));
const [routingConfig] = routingOptions.filter(item => item.beneficiaryRoutingConfigId === body.beneficiaryRoutingConfigId);
if (!routingConfig) {
throw new BadRequestException('Invalid beneficiaryRoutingConfigId');
}
const { error } = this.beneficiaryService.bankDetailsSchema(routingConfig.bankDetail).validate(body, { abortEarly: false });
if (error) {
throw new BadRequestException(error);
}
// write here logic to validate routing codes
await this.beneficiaryService.validateBeneficiaryBankDetails(routingConfig, body, pick(headers, GET_HEADERS_LIST), beneficiary);
// write here logic to insert bank details of bene
return this.beneficiaryService.updateBankDetails(body, headers, beneficiary.beneficiaryId);
}
Nest允许我们提取请求的参数、头、正文等
我想从我的参数中提取一个特定的密钥
例如,我的参数包含:
1.客户ID
2.客户ID
3.受益人
我可以取出受益人ID并将其存储在受益人灰烬中,但我不能同时执行验证。有什么解决方法吗?您可以通过自定义管道访问它。例如,ParseIntPipe
从'@nestjs/common'导入{PipeTransform,可注入,ArgumentMetadata,BadRequestException};
@可注射()
导出类ParseIntPipe实现PipeTransform{
转换(值:字符串,元数据:ArgumentMetadata):编号{
const val=parseInt(值,10);
if(伊斯南(瓦尔)){
抛出新的BadRequestException(“验证失败”);
}
返回val;
}
}
@Get(':id')
异步findOne(@Param('id',new ParseIntPipe())id){
返回此.catsService.findOne(id);
}
欲了解更多信息,请阅读