Извлечение и проверка - PullRequest
0 голосов
/ 09 марта 2020

Я работаю над проектом, который основан на гнезде. js framework

Ниже приведен фрагмент моей функции:

  @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 позволяет нам извлечь параметры, заголовки, тело и т. д. c запроса.

https://docs.nestjs.com/controllers

Я хочу извлечь конкретный ключ из моих параметров

Например, мои параметры содержат: 1.clientId 2.customerId 3.beneficiaryId

Я могу извлечь идентификатор получателя и сохранить его в получателе Ha sh, но я не могу выполнить проверку в то же время время. Есть ли работа вокруг?

1 Ответ

1 голос
/ 09 марта 2020

Добраться до него можно по заказным трубам. например, 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 -использование-case

...