文章问题导向
操作数据库时,如何做异常处理异常? 比如id不存在,用户名已经存在?
如何统一处理请求失败和请求成功?
如果你都有了答案,可以忽略本文章,或去nest学习导图寻找更多答案
处理方式:
在nest中,一般是在service中处理异常,如果有异常,直接抛出错误,由过滤器捕获,统一格式返回,如果成功,service把结果返回,controller直接return结果即可,由拦截器捕获,统一格式返回
失败:过滤器统一处理
成功:拦截器统一处理
当然你也可以在controller处理,一样没问题的
例子
controller
user.controller.ts
import {
Controller,
Get,
Post,
Body,
HttpCode,
HttpStatus,
} from '@nestjs/common';
import {
UserService } from './user.service';
@Controller('user')
export class UserController {
constructor(private readonly userService: UserService) {
}
@Post()
@HttpCode(HttpStatus.OK) //创建成功返回的是201状态码,这里重置为200,需要用到的可以使用HttpCode设置
async create(@Body() user) {
return await this.userService.create(user);
}
@Get(':id')
async findOne(@Param('id') id: string) {
return await this.userService.findOne(id);
}
}
service
user.service.ts
import {
Injectable, HttpException, HttpStatus } from '@nestjs/common';
import {
Repository } from 'typeorm'