控制器嵌套路由内的Nestjs验证失败(应为数字字符串)

控制器嵌套路由内的Nestjs验证失败(应为数字字符串),nestjs,Nestjs,我有一个使用@controller'tasks'装饰器的控制器。在这个控制器中,我有一个路由@Get'/week,通常请求应该转到localhost:4000/tasks/week,但它返回了一个错误的请求: { "statusCode": 400, "error": "Bad Request", "message": "Validation failed (numeric string is expected)" } 下面是我的代码: @Controller('tas

我有一个使用@controller'tasks'装饰器的控制器。在这个控制器中,我有一个路由@Get'/week,通常请求应该转到localhost:4000/tasks/week,但它返回了一个错误的请求:

{
    "statusCode": 400,
    "error": "Bad Request",
    "message": "Validation failed (numeric string is expected)"
}
下面是我的代码:

@Controller('tasks')
@UseGuards(AuthGuard())
export class TasksController {
  constructor(private tasksService: TasksService) { }

  @Get('/:id')
  getTaskById(@Param('id', ParseIntPipe) id: number): Promise<Task> {
    return this.tasksService.getTaskById(id);
  }

  @Get('/week')
  getTasksByWeek(@GetUser() user: User): Promise<Task[]> {
    return this.tasksService.getTasksByWeek(user);
}

我找到了解决此问题的方法。诸如Get'week'之类的路由或接受参数的路由应该在具有基本控制器路由的路由之前排列

假设我们有一条路径@GET,如下所示,可以获取所有任务:

 @Get()
  getTasks(@GetUser() user: User): Promise<Task[]> {
    return this.tasksService.getTasksByWeek(user);
}
代码中应包含的内容:

@Controller('tasks')
@UseGuards(AuthGuard())
export class TasksController {
  constructor(private tasksService: TasksService) { }

  @Get('/:id')
  getTaskById(@Param('id', ParseIntPipe) id: number): Promise<Task> {
    return this.tasksService.getTaskById(id);
  }

  @Get('/week')
  getTasksByWeek(@GetUser() user: User): Promise<Task[]> {
    return this.tasksService.getTasksByWeek(user);
}
 @Get()
  getTasks(@GetUser() user: User): Promise<Task[]> {
    return this.tasksService.getTasksByWeek(user);
}

我找到了解决此问题的方法。诸如Get'week'之类的路由或接受参数的路由应该在具有基本控制器路由的路由之前排列

假设我们有一条路径@GET,如下所示,可以获取所有任务:

 @Get()
  getTasks(@GetUser() user: User): Promise<Task[]> {
    return this.tasksService.getTasksByWeek(user);
}
代码中应包含的内容:

@Controller('tasks')
@UseGuards(AuthGuard())
export class TasksController {
  constructor(private tasksService: TasksService) { }

  @Get('/:id')
  getTaskById(@Param('id', ParseIntPipe) id: number): Promise<Task> {
    return this.tasksService.getTaskById(id);
  }

  @Get('/week')
  getTasksByWeek(@GetUser() user: User): Promise<Task[]> {
    return this.tasksService.getTasksByWeek(user);
}
 @Get()
  getTasks(@GetUser() user: User): Promise<Task[]> {
    return this.tasksService.getTasksByWeek(user);
}

如果你和我一样也是Nestjs的初学者,那么请确保你没有犯这些基本错误

从游乐场/前端传递的参数和在解析器函数中接收的参数应相同,例如 在这里的发送端和接收端,字符串都应该是itemCategoryId

如果解析器函数中要接收的参数可以为null,那么您应该提到我正在为Nestjs提供这方面的示例,您可以搜索其他框架的语法
如果你和我一样也是Nestjs的初学者,那么请确保你没有犯这些基本错误

从游乐场/前端传递的参数和在解析器函数中接收的参数应相同,例如 在这里的发送端和接收端,字符串都应该是itemCategoryId

如果解析器函数中要接收的参数可以为null,那么您应该提到我正在为Nestjs提供这方面的示例,您可以搜索其他框架的语法
这是奇怪的解决办法这是奇怪的解决办法