Nest.js学习记录2

2024-04-21 16:12
文章标签 学习 记录 js nest

本文主要是介绍Nest.js学习记录2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.项目结构

        src

                auth

                        dto        (包含数据传输对象,Data Transfer Object,相关的文件)

                                register.dto.ts        注册DTO,用于传输注册用户的信息

                        auth.controller.ts        负责处理身份验证相关的路由和控制逻辑

                        auth.module.ts        身份验证模块,定义身份验证相关的模块和服务提供者

                        auth.service.ts        身份验证服务,处理用户身份验证的逻辑

                common

                        rules        包含通用的验证规则相关的文件

                                is-not-exists.rule.ts        定义了一个验证规则,检查某些条件是否不存在

                        validate.ts        通用的验证逻辑,用于执行验证逻辑

                app.module.ts        项目的主模块文件,定义了整个项目的根模块

                main.ts        项目的入口文件启动整个应用程序

2.dto例

        register.dto.ts

import { IsNotEmpty } from "class-validator";
import { IsNotExistsRule } from "../../common/rules/is-not-exists.rule";export default class RegisterDto {@IsNotEmpty({ message: '用户名不能为空' })@IsNotExistsRule("user" , {message: "用户已存在"})name: string;@IsNotEmpty({ message: '密码不能为空' })password: string;
}

3.auth例

        auth.controller.ts

import { AuthService } from "./auth.service";
import { Controller , Body , Post } from "@nestjs/common";
import RegisterDto from "./dto/register.dto";@Controller()
export class AuthController {constructor(private auth:AuthService) {}@Post("register")register(@Body() body:RegisterDto) {return body;}@Post("login")login(){return "abc"}
}

        auth.module.ts

import { Module } from "@nestjs/common";
import { AuthService } from "./auth.service";
import { AuthController } from './auth.controller';
@Module({controllers: [AuthController],providers: [AuthService],
})
export class AuthMoudule {}

        auth.service.ts

import { Injectable } from "@nestjs/common";@Injectable()
export class AuthService {}

4.common例

        rules

                is-not-exists.rule.ts

import { PrismaClient } from "@prisma/client";
import {registerDecorator,ValidationArguments,ValidationOptions,
} from "class-validator";//自定义验证规则,用于检查数据库表中指定字段的值是否唯一
export function IsNotExistsRule(table: string, // 数据库表名validationOptions?: ValidationOptions // 验证选项
){return function (object: Record<string, any>, propertyName: string){registerDecorator({name: "isNotExistsRule", // 规则名称target: object.constructor, // 被装饰的类propertyName: propertyName, // 被装饰的属性名constraints: [table], // 约束参数,指定数据库表名options: validationOptions, // 验证选项validator: {// 异步验证函数,检查数据库表中是否已存在相同值async validate(value: string, args: ValidationArguments){const prisma = new PrismaClient();const res = await prisma[table].findFirst({where: {[args.property]: value // 使用 propertyName 属性名和传入的值查找记录}})// 返回判断结果,如果 res 存在则返回 false,表示不符合规则return !Boolean(res)}}})}
}

        validate.ts

import { HttpException, HttpStatus, ValidationPipe } from "@nestjs/common"
import { ValidationError } from "class-validator"export default class Validate extends ValidationPipe {protected flattenValidationErrors(validationErrors: ValidationError[]): string[] {const messages = {};validationErrors.forEach(error => {messages[error.property] = Object.values(error.constraints)[0];});throw new HttpException({code:422,messages,},HttpStatus.UNPROCESSABLE_ENTITY)}
}

这篇关于Nest.js学习记录2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923505

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板