从0到1学习NestJs(三)
从 0 到 1 学习 NestJS (三) - 请求处理、响应处理、DTO 与验证前言在前面的文章中,我们学习了 NestJS 的基础概念,包括模块、控制器和服务。本篇将深入探讨请求处理、响应处理、数据传输对象 (DTO) 以及验证,这些都是构建健壮 API 的关键部分。
1. 请求处理1.1 获取请求参数NestJS 提供了多种方式来获取客户端请求中的参数:
路径参数 (@Param()): 从 URL 路径中获取参数。
123456789import { Controller, Get, Param } from '@nestjs/common';@Controller('products')export class ProductsController { @Get(':id') getProduct(@Param('id') id: string): string { return `Product ID: ${id}`; & ...
从0到1学习NestJs(二)
从 0 到 1 学习 NestJS (二) - 模块、控制器与服务前言在上一篇文章中,我们搭建了 NestJS 的开发环境,并了解了一些基础概念。本篇是第二部分,我们将深入学习 NestJS 的核心组件:模块(Module)、控制器(Controller)和服务(Service),并通过一个简单的用户管理示例来实践这些概念。
模块 (Module)模块的作用模块是 NestJS 应用程序的基本组织单元。它们用于封装和管理相关的控制器、服务和依赖。模块可以导入其他模块,从而实现代码的复用和模块化。
创建模块我们可以使用 Nest CLI 来创建一个新的模块。在终端中,进入你的项目目录,执行以下命令:
1nest g module users
这会在 src/ 目录下创建一个 users 目录,其中包含 users.module.ts 文件。
users.module.ts 内容
12345678import { Module } from '@nestjs/common';@Module({ imports: [], con ...
从0到1学习NestJs(一)
从 0 到 1 学习 NestJS (一) - 环境搭建与基础概念前言NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它使用了 TypeScript,并深受 Angular 的影响,提供了模块化、可测试和易维护的架构。本系列文章将从零开始,带你逐步了解 NestJS 的核心概念和开发实践。
本篇是第一部分,我们将专注于环境搭建和一些基础概念的理解。
环境准备在开始之前,你需要确保你的机器上已经安装了以下工具:
Node.js (>= 16.x): NestJS 需要 Node.js 环境。你可以从 https://nodejs.org 下载安装。
npm (>= 7.x) 或 yarn: Node.js 包管理器。npm 通常会随 Node.js 一起安装,yarn 可以通过 npm install -g yarn 安装。
Code Editor: 推荐使用 VS Code,它对 TypeScript 和 NestJS 的支持很好。
安装 Nest CLINest CLI 是 NestJS 的命令行工具,可以 ...
从0到1学习NestJs(四)
从 0 到 1 学习 NestJS (四) - 数据库集成 (TypeORM + PostgreSQL)前言在前面的文章中,我们学习了 NestJS 的核心概念,包括模块、控制器、服务、请求处理、响应处理、DTO 和验证。本篇将深入探讨如何在 NestJS 应用中集成数据库,我们将使用 TypeORM 作为 ORM (Object-Relational Mapping) 工具,并以 PostgreSQL 作为数据库示例。
1. 安装必要的依赖首先,我们需要安装 TypeORM 和 PostgreSQL 的相关依赖:
123npm install @nestjs/typeorm typeorm pg# 或者yarn add @nestjs/typeorm typeorm pg
@nestjs/typeorm: NestJS 官方提供的 TypeORM 集成模块。
typeorm: TypeORM 本身。
pg: PostgreSQL 数据库驱动。
配置 TypeORM创建 ormconfig.js 文件在项目根目录下创建一个名为 ormconfig.js 的文件,并添加以下配置:
1 ...
从0到1学习NestJs(完结)
从 0 到 1 学习 NestJS (五) - 身份验证与授权 (Passport.js + JWT)前言在前面的文章中,我们学习了 NestJS 的核心概念、数据库集成以及如何使用 TypeORM。本篇将深入探讨如何在 NestJS 应用中实现身份验证和授权,我们将使用 Passport.js 作为身份验证中间件,并使用 JWT (JSON Web Tokens) 来管理用户会话。
1. 安装必要的依赖首先,我们需要安装 Passport.js、JWT 和相关依赖:
123npm install @nestjs/passport passport passport-jwt jsonwebtoken bcrypt @types/passport-jwt# 或者yarn add @nestjs/passport passport passport-jwt jsonwebtoken bcrypt @types/passport-jwt
@nestjs/passport: NestJS 官方提供的 Passport.js 集成模块。
passport: Passport.js 本身。
pa ...
通用权限管理数据库设计
增强版 RBAC 权限管理数据库设计概述本设计方案基于 RBAC (Role-Based Access Control) 模式,旨在构建一个灵活、可扩展、易维护的权限管理系统。该方案不仅包含基本的角色、权限和资源管理,还增强了数据权限控制、字典管理和操作日志功能,以满足更复杂的业务需求。
数据库表结构用户表 (sys_user)
字段名
数据类型
是否为空
默认值
说明
id
BIGINT
否
自增长
用户ID,主键
username
VARCHAR(255)
否
用户名,唯一索引
password
VARCHAR(255)
否
密码
real_name
VARCHAR(255)
是
真实姓名
email
VARCHAR(255)
是
邮箱
phone
VARCHAR(20)
是
电话
avatar
VARCHAR(255)
是
头像 URL
status
INT
否
1 (启用)
用户状态 (1: 启用, 0: 禁用)
create_time
DATETIME
否
当前时间
创建时间
update_time
DATETIME
...
Markdown语法汇总
🚀 Markdown 简介Markdown 是一种轻量级标记语言,它允许你使用易读易写的纯文本格式编写文档,然后转换成 HTML 等格式。Markdown 广泛应用于博客、文档、笔记等领域,因其简洁高效而备受欢迎。
📝 基础语法1. 标题使用 # 符号表示标题,# 的数量表示标题的级别。
123456# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题
2. 段落12345段落之间使用空行分隔。这是一个段落。这是另一个段落。
3. 换行1234在行末尾添加两个或多个空格,然后按回车键即可换行。这是一行文本, 这是下一行文本。
4. 强调12345678使用 * 或 _ 包裹文本表示强调。*斜体文本*_斜体文本_**粗体文本**__粗体文本__***粗斜体文本***___粗斜体文本___
5. 删除线123使用 ~~ 包裹文本表示删除线。~~这是删除线文本~~
6. 引用12345使用 > 符号表示引用。> 这是一段引用文本>> 这是引用文本的第二行
7. 列表123456789101 ...
工作问题记录
.Net8 + SqlServer的坑问题描述:SSL出错,已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL 提供程序, error: 0 - 证书链是由不受信任的颁发机构颁发的)
解决方案:数据库连接串增加:Encrypt=True;TrustServerCertificate=True;
Navicat连接MySql报错问题描述:在用Navicat连接非本地的Mysql服务器数据库,报1130错误
1ERROR 1130: Host 192.168.3.100 is not allowed to connect to this MySQL server
原因分析:无法给远程连接的用户权限问题
解决方案:在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。
123456mysql -u root -p --以权限用户root登录use mysql; --选择mysql库select 'host' from user where u ...
自定义实体类封装
实体基类接口12345678910/// <summary>/// 实体基类接口/// </summary>public interface IEntity<TKey>{ /// <summary> /// 主键Id /// </summary> TKey Id { get; set; }}
创建基类接口123456789101112131415/// <summary>/// 创建基类接口/// </summary>public interface ICreatedAudit{ /// <summary> /// 创建人 /// </summary> long? CreatedUserId { get; set; } /// <summary> /// 创建时间 /// </summary> DateTime? ...
EFCore入门 实战教程
EFCore入门 实战教程Entity Framework Core (EF Core) 是一个轻量级、可扩展且跨平台的 ORM(对象关系映射)框架,用于 .NET 应用程序中进行数据访问。本文将带您从零开始,通过实际操作步骤和 VS2022 截图,深入了解 EF Core 的各种用法,包括模型创建、数据查询、数据修改、迁移、高级查询等。
环境准备在开始之前,请确保您已安装以下软件:
Visual Studio 2022:建议安装最新版本,并确保已安装 .NET 开发工具。
.NET SDK:确保已安装 .NET 6 或更高版本。
数据库:本文将使用 SQL Server 作为示例,您也可以使用其他数据库,如 MySQL、PostgreSQL 等。
创建项目
打开 Visual Studio 2022,点击“创建新项目”。
选择 “控制台应用程序”,点击“下一步”。
输入项目名称(例如“EFCoreDemo”),并选择项目位置,点击“下一步”。
选择 “.NET 6.0” 或更高版本,点击“创建”。
安装 EF Core 相关 NuGet 包
在 Visual S ...