nestjs joi Отладка валидации входных данных для контроллеров

Просто уберем джои из аннотаций и проведем проверку в теле метода контроллера, например:

import 'joi-extract-type';
import * as joi from 'joi';
import { Controller, Get, Param, Query } from '@nestjs/common';
import { JoiValidationPipe } from '../../pipes/validation.pipe';

enum MyType {
  FIRST = 'first',
  SECOND = 'second',
}

export const testGetParamsSchema = joi.object({
  type: joi.string().valid(MyType.FIRST, MyType.SECOND).required(),
});

export type TestGetParamsSchema = joi.extractType<typeof testGetParamsSchema>;

@Controller('test')
export class TestController {

  @Get('queryparams/:id')
  getTestGetParams(
    @Param('id') id,
    @Query('type') type,
    @Query() //new JoiValidationPipe(testGetParamsSchema)
    query: TestGetParamsSchema,
  ): string {
    testGetParamsSchema.validate(query);
    console.log('-------------query', query);
    console.log('-------------valid', testGetParamsSchema.validate(query));
    return `Url param: ${id}, Get param type = ${type}`;
  }
}

Ещё раз - что на что заменять

Было, например:


import 'joi-extract-type';

import * as joi from 'joi';

export const myParametersDtoSchema = joi.object({
  basin: joi.string().required(),
});
export type MyParametersDtoSchema = joi.extractType<typeof myParametersDtoSchema>;

@Controller('api/parameters')
export class ParametersController {
@Get('/getInitOptions')
  async getInitData(
    @Query(new JoiValidationPipe(myParametersDtoSchema)) { internalQueryValue }: MyParametersDtoSchema,
  ) {
     callSomeFunc(internalQueryValue); 
  }

в данном случае internalQueryValue - какой-то параметр из GET запроса, чтобы проверить работу валидации перепшем этот пример так, вынеся проверку из определения сигнатуры функции в ее тело:


@Controller('api/parameters')
export class ParametersController {
@Get('/getInitOptions')
  async getInitData(
   @Query() query: MyParametersDtoSchema,,
  ) {
     myParametersDtoSchema.validate(query);

    console.log('-------------query', query);
    console.log('-------------valid', myParametersDtoSchema.validate(query));
  }

Key Words for FKN + antitotal forum (CS VSU):