gpt4 book ai didi

javascript - 提取和验证

转载 作者:行者123 更新时间:2023-12-02 21:32:00 25 4
gpt4 key购买 nike

我正在开发一个基于nest.js框架的项目

以下是我的函数的片段:

  @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 允许我们提取请求的参数、 header 、正文等。

https://docs.nestjs.com/controllers

我想从我的参数中提取特定的 key

例如我的参数包含:1.客户端ID2.客户ID3.受益人Id

我可以取出 beneficiaryId 并将其存储在 beneficiaryHash 中,但无法同时执行验证。有什么解决办法吗?

最佳答案

您可以通过自定义管道到达它。例如 ParseIntPipe

import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException } from '@nestjs/common';

@Injectable()
export class ParseIntPipe implements PipeTransform<string, number> {
transform(value: string, metadata: ArgumentMetadata): number {
const val = parseInt(value, 10);
if (isNaN(val)) {
throw new BadRequestException('Validation failed');
}
return val;
}
}
@Get(':id')
async findOne(@Param('id', new ParseIntPipe()) id) {
return this.catsService.findOne(id);
}

更多知识请阅读https://docs.nestjs.com/pipes#transformation-use-case

关于javascript - 提取和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60599902/

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