NestJS-全局规范优化

举报
林太白 发表于 2025/07/28 13:31:41 2025/07/28
【摘要】 NestJS-全局规范优化

NestJS-全局规范优化

提示优化

之前我们的注册提示是直接系统给我们ConflictException提示的这部分

import { ConflictException} from '@nestjs/common';

throw new ConflictException('用户已存在!');

👉手动自定义成规范的返回信息

 return {
  data: [],
  message: '用户已存在!',
  code: 400,
};

👉使用抛出给我们提供的400错误代码

//引入
import { HttpException, HttpStatus} from '@nestjs/common';


throw new HttpException(
  {
    code: 400,  // 适当的错误码是 400
    message: '用户已存在!',
  },
  HttpStatus.BAD_REQUEST,  // 使用 400 状态码
);


//鼠标放上面可以看出上面BAD_REQUEST给我们提供的最基本的代码提示 
(enum member) HttpStatus.BAD_REQUEST = 400

上面自定义和系统给我们提示的主要区别就在于浏览器读取的时候不一致

一种是红色的类似console.error()  //采用这种

另外一种则是success的状态

返回格式规范

返回的数据格式我们统一放入src=> utils => response.dto.ts 文件之中

import { IsString, IsEmail, MinLength } from 'class-validator';
export interface ResponseDto<T> {
  code: number;
  message?: string;
  data: T;
  total?: number;
}
export class RegisterDto{
  @IsString()
  username: string;
  @IsString()
  @MinLength(3)
  password: string;
}

添加创建时间和更新时间

在新增用户的时候我们需要给用户添加创建时间,利用@CreateDateColumn()自动设置创建时间,直接在我们的实体之中进行更改

👉创建时间

@Column({ nullable: true, type: 'datetime', comment: '创建时间' })
createTime: Date;


//更改以后
@CreateDateColumn({ nullable: true, type: 'datetime', comment: '创建时间' })
createTime: Date; // 自动设置创建时间

👉更新时间

@Column({ nullable: true, type: 'datetime', comment: '更新时间' })
updateTime: Date;


//更改以后
@UpdateDateColumn({ nullable: true, type: 'datetime', comment: '更新时间' })
updateTime: Date;

默认注册手机号

👉默认注册手机号

这里我们的登录注册方式采取的(用户账号密码)以及(手机号+验证码)的方式

但是如果我们想要默认用户的账号为手机号可以直接更改注册实体

// register.dto.ts
@Transform(({ value, obj }) => value || obj.username)

抽离规范密码方法

👉抽离规范密码认证与检测方法

// 密码加密解密授权信息
import * as bcrypt from 'bcrypt';
// 密码加密解密
// 密码加密
export const hashPassword = async (password: string): Promise<string> => {
  const salt = await bcrypt.genSalt(10);  // 生成 salt
  const hashedPassword = await bcrypt.hash(password, salt);  // 用 salt 加密密码
  return hashedPassword;
}

// 密码验证
export const validatePassword = async (password: string, hashedPassword: string): Promise<boolean> {
  const isMatch = await bcrypt.compare(password, hashedPassword);  // 比较密码
  return isMatch;
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。