nestjs joi Отладка валидации входных данных для контроллеров
Primary tabs
Просто уберем джои из аннотаций и проведем проверку в теле метода контроллера, например:
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));
}- Log in to post comments
- 1721 reads