Skip to content

请求@nestjsx-crud生成的post接口报错an unknown value was passed to the validate function

场景

我用@nestjsx-crud这个库自动生成了一套restful风格api接口,使用它生成post接口,发送请求时,接口报错an unknown value was passed to the validate functio,已经确认过参数传输没有问题。后来用网上查的一些方案,试了都不对,最后还是自己摸索出解决方案,记录一下如何处理。

解决方案

处理起来其实很简单,需要自己定义dto类型传给Crud装饰器即可解决。不手动传的话,Crud默认使用entity实体类的类型,但是我们实体类一般是不加class-validator装饰器的,全局设置的ValidationPipe也就不知道该怎么校验(因为报错是ValidationPipe校验后抛出的)

ts
@Crud({
    model: {
        type: Menu,
    },
    routes: {
        only: ['getManyBase', 'createOneBase', 'updateOneBase', 'deleteOneBase'],
    },
    dto: {
        create: CreateMenuDto, // 在这里手动加dto
        update: UpdateMenuDto,
    },
})
@Controller('menus')
export class MenusController implements CrudController<Menu> {
    constructor(public readonly service: MenusService) {}
}

苏ICP备20040768号