这是我的基本控制器
export function BaseControllerFactory<E>(
createEntityDto: typeof CreateEntityDto,
updateEntityDto: typeof UpdateEntityDto,
entityToViewDto: ViewDtoContructor<E>,
): Type<IBaseController<E>> {
class BaseController implements IBaseController<E> {
constructor(private readonly baseService: BaseService<E>) {}
@Post()
@ApiOperation({ summary: 'Create new entity' })
@ApiBody({ type: createEntityDto })
async createEntity(@Body(ValidationPipe) dto: Type<CreateEntityDto>) {
//
}
@Get()
@ApiOperation({ summary: 'Get entities' })
async getEntities(@Query(ValidationPipe) getEntitiesDto: GetEntitiesDto) {
//
}
...
return BaseController;
}
这是UserController扩展BaseController
@ApiTags('Users')
@Controller('users')
export class UsersController extends BaseControllerFactory<User>(
CreateUserDto,
UpdateUserDto,
UserToViewDto,
) {
constructor(private readonly userService: UsersService) {
super(userService);
}
}
我的问题是,当我用null替换CreateUserDto时,我希望API创建用户将不会生成。谢谢您的关注
我认为这是不可能的,DTO只是描述了输入数据的格式,这不是什么硬合约。