nest统一处理数据库操作的查询结果

本文介绍了在NestJS中如何统一处理数据库操作异常,如ID不存在或用户名已存在的问题。建议在Service层进行异常处理并抛出错误,由过滤器捕获并返回统一格式。对于成功的情况,Controller直接返回结果,由拦截器进行格式化响应。文中提供了一段Controller和服务的示例代码,并展示了全局过滤器和拦截器的配置与Postman测试的成功与失败情况。
摘要由CSDN通过智能技术生成

文章问题导向

操作数据库时,如何做异常处理异常? 比如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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值