如何在NestJS中使用带有ValidationPipe的Prisma



我正试图将Prisma与NestJS提供的ValidationPipe一起使用,但它不起作用,我使用的是带有DTO(类(的class-validator包作为ValidationPipes,它运行得很好,现在我需要一种方法将相同的模式与Prisma一起使用,而不需要DTO不具有重复的类型。(我想避免创建用于验证的自定义管道(

DTO文件:

import { IsNotEmpty } from 'class-validator';
export class TodoCreateDto {
@IsNotEmpty()
title: string;
@IsNotEmpty()
description: string;
}

带DTO:工作

@Controller('todos')
export class TodosController {
constructor(private todosService: TodosService) {}
@Post()
@UsePipes(ValidationPipe)
createTodo(@Body() todoCreateDto: TodoCreateDto) {
return this.todosService.createTodo(todoCreateDto);
}
}

带PRISMA:不工作

@Controller('todos')
export class TodosController {
constructor(private todosService: TodosService) {}
@Post()
@UsePipes(ValidationPipe)
createTodo(@Body() todoCreateInput: Prisma.TodoCreateInput) {
return this.todosService.createTodo(todoCreateInput);
}
}

全代码回购链路

Nest的ValidationPipe默认情况下通过使用class-validatorclass-transformer以及DTO的类来工作。如果类没有这些库的装饰器,管道就不会为您做任何事情。您需要某种方法来告诉Prisma使用类验证器decorator生成与SDL相关的类类型,目前我认为这是不可能的。

相关内容

  • 没有找到相关文章

最新更新