- 博客(70)
- 收藏
- 关注
原创 nestjs 全栈进阶--typeorm 一对一
在 TypeORM 中,一对一(One-to-One)关系是一种数据库关系,其中一个表中的每一行只与另一个表中的一行相关联。比如用户和身份证。
2024-08-14 17:43:02
315
原创 nestjs 全栈进阶--typeorm
TypeORM 是一个用于 Node.js 的 ORM(Object-Relational Mapping,对象关系映射)库,它提供了一种将 JavaScript 对象映射到数据库表的方式。这意味着你可以使用 JavaScript 对象和 TypeScript 类来与数据库进行交互,而不必编写原始的 SQL 语句。类型安全:由于 TypeORM 支持 TypeScript,它允许你在开发时获得类型检查的好处。数据库支持。
2024-08-09 13:53:07
277
原创 nestjs 全栈进阶--windows安装docker desktop
因为docker desktop 是可以部署在windows 上来运行docker的应用服务的,其基于windows 的 Hyper-V服务和WSL2内核的Windows上创建一个子系统(linux),从而实现其在windows上运行docker。如上图中提示,先执行wsl --update 等wsl 更新成功后,需要对wsl重启后才会更新生效。这个路径 你们自己找个地方就行,最好别放c盘,然后,Apply&restart,最后关闭软件,重新打开。注意看下你电脑,有没让你更新系统,有的话就更新并重启。
2024-08-09 13:52:02
249
原创 nestjs 全栈进阶--异常过滤器
在NestJS中,异常过滤器(Exception Filters)是一种强大的错误处理机制,它允许开发者捕获和处理应用程序中发生的异常。这些过滤器可以全局或局部地应用于控制器或特定路由,以提供统一的错误处理和响应格式化。我们之前都是用的nest自带的exception,现在我们来试试,自己定义: string){// @Catch 指定要捕获的异常,比如指定 BadRequestExceptioncode: 401,
2024-08-08 14:50:47
888
原创 nestjs 全栈进阶--ValidationPipe
在Nest.js中,ValidationPipe 是一个内置的管道,它主要用于对控制器层接收到的HTTP请求参数进行验证。ValidationPipe 结合了 class-validator 库的功能,允许开发人员通过在 DTO(Data Transfer Object)类中使用装饰器来声明性地定义各种验证规则。我们上节课,讲的都是对get请求的参数验证,那我们的post请求参数应该如何验证?message除了是字符串,还可以是函数。
2024-07-30 13:44:17
580
原创 nestjs 全栈进阶--管道
在Nest.js框架中,Pipe 是一种用于处理HTTP请求参数的装饰器和类,它是Nest应用中实现输入验证、数据转换和格式化的重要组件之一。当请求到达控制器(Controller)中的某个路由处理器方法时,可以在方法参数上使用@Body()、@Query()、@Param()等装饰器来指定期望获取的请求体、查询参数或路径参数。然后,通过在这些装饰器之上应用自定义的管道(Pipe),可以对这些参数进行预处理。
2024-07-29 15:20:53
904
原创 nestjs 全栈进阶--拦截器
RxJS(Reactive Extensions for JavaScript)是一款专为JavaScript和TypeScript设计的响应式编程库,它遵循ReactiveX规范,提供了一套强大的工具和API,用于处理异步数据流和事件驱动编程。RxJS引入了可观察对象(Observable)的概念,这是一种可以推送多个值、错误或完成通知的数据源。Observable:可观察对象是RxJS中最基本的数据类型,它代表了未来可能发出0个或多个值的异步数据流。
2024-06-04 17:38:29
1055
原创 nestjs 全栈进阶--中间件
在Nest.js框架中,中间件(Middleware)是一个非常重要的概念,它是HTTP请求和响应生命周期中的一个重要组成部分,允许开发者在请求到达最终的目的控制器方法之前或响应返回客户端之前,对请求或响应进行预处理或后处理。Nest.js中间件的工作原理是基于洋葱模型(Onion Architecture),也就是请求依次通过一层层的中间件,每个中间件都可以选择是否继续将请求传递给下一个中间件或者提前结束请求。
2024-05-10 17:30:19
463
原创 nestjs 全栈进阶--Module和Provider的循环依赖
因为 Nest 创建 Module 的时候会递归创建它的依赖,而它的依赖又依赖了这个 Module,所以没法创建成功,拿到的就是 undefined。分别创建 ccc 和 ddd 两个 service,--no-spec 是不生成测试文件,--flat 是平铺。好了,我们看了特殊会出错的情况,我们在来验证下,正常的依赖情况,我们在b的service中再写个handler。保存后,之前的报错就没了,然后我们去AppController写个方法使用下。我们的程序并不会报错,浏览器也正常输出。
2024-05-09 15:14:10
805
原创 nestjs 全栈进阶--自定义装饰器
它生产的代码,这个就是Aaa就是我们自定义的装饰器不知道大家还记不记得我们之前讲过的@SetMetadata,我们快速的回顾一下上面就是我们通过nest提供的@SetMetadata装饰器,实现的角色控制守卫,但是不同 metadata 有不同的业务场景,有的是用于权限的,有的是用于其他场景的,这时候就可以在封装一层我们修改下aaa.decorator在使用我们写的这个装饰器效果和之前一样可以看到我们这里装饰太多了 ,那我们是不是可以自定义个装饰器,把他们整合到一起?效果也是和之前的一致。
2024-05-07 13:38:14
568
原创 nestjs 全栈进阶--装饰器
前面我们讲过,属性注入要指定注入的 token,可能是 class 也可能是 string,你还可以通过 useFactory、useValue 等方式声明 provider,这里不再演示。如果模块被很多地方都引用,为了方便,可以用 @Global 把它声明为全局的,这样它 exports 的 provider 就可以直接注入了。我们保存时候,你会发现,这个是不会报错的,当然,如果你在浏览器中访问,他会报错,因为我们无法从undefined中获得getHello这个方法。这些在参数获取时,我们也讲过了。
2024-04-26 16:18:48
664
原创 vue和react通用后台管理系统权限控制方案
在任何企业级应用中,尤其是后台管理系统,权限控制是一个至关重要的环节。它确保了系统资源的安全性,防止非法访问和操作,保障业务流程的正常进行。本文件将详细解析后台管理系统中的权限控制机制及其实施策略。那么权限控制都包括什么呢?页面权限:菜单栏是否显示,路由是否可访问功能权限:按钮是否显示,是否可点击接口权限:接口是否可访问(后端内容)不同的账号显示的菜单栏不同,页面上可以操作的按钮也不一样,这些操作都是通过权限模型实现的,那么接下来我们就来学习下常见的权限模型。
2024-04-12 16:55:03
1767
原创 nestjs 全栈进阶--aop面向切面编程
面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,其核心理念在于将交叉-cutting concerns(横切关注点)从主业务逻辑中抽离出来,以便于管理和重用。这些横切关注点通常包括日志记录、事务管理、安全检查、性能监控等,它们贯穿于整个系统,可能会影响到多个类或多个方法
2024-04-12 09:27:55
798
原创 nestjs 全栈进阶--nest生命周期
所有应用程序元素都有一个由 Nest 管理的生命周期。Nest 提供了生命周期钩子,提供了对关键生命时刻的可见性,以及在关键时刻发生时采取行动(在你的module,injectable或者controller中注册代码)的能力
2024-04-09 14:02:06
612
原创 nestjs 全栈进阶--module
在 Nest.js 中,Module 是框架的核心概念之一,用于组织和管理应用程序的不同部分,包括服务、控制器、中间件以及其他模块的导入。每个 Nest.js 应用程序至少有一个根模块(通常命名为 AppModule),并且可以根据需要创建更多的模块以实现更好的代码组织和模块化。
2024-04-07 11:21:39
1055
原创 nestjs 全栈进阶--provider
在 Nest.js 框架中,Providers 是一个核心概念,用于定义和管理应用中的服务、数据库连接、中间件、门面(facade)、仓库(repository)、工厂(factory)、帮助器(helper)等可注入的依赖。Providers 是 Nest.js 实现依赖注入(Dependency Injection, DI)体系的基础单元,它们可以被其他组件通过构造函数、属性注入等方式依赖,并由 Nest.js 的依赖注入容器自动管理和实例化。第一种用法就是一个语法糖其实他的完整写法是这样的。
2024-04-04 15:07:54
1177
原创 nestjs 全栈进阶--控制器和参数获取
Nest,使用 @Body 装饰器,Nest 会解析请求体,然后注入到 dto 中(dto 是 data transfer object,就是用于封装传输的数据的对象)@Controller('person') 的路由和 @Get(':id') 的路由会拼到一起,也就是只有 /person/xxx 的 get 请求才会走到这个方法。注意,这个 find 的路由要放到 :id 的路由前面,因为 Nest 是从上往下匹配的,如果放在后面,那就匹配到 :id 的路由了。后面的用 & 分隔的字符串传递数据。
2024-04-03 11:13:43
681
原创 nestjs 全栈进阶-装饰器概念
装饰器是一种特殊类型的声明,可以被附加到类声明、方法、访问器、属性或参数上。装饰器使用 @expression 这样的语法,其中 expression 指向一个生成装饰器函数的表达式。装饰器函数会在运行时被调用,传入被装饰的声明作为参数,并有机会修改或增强其行为console.log('先打印');class Xt {@logconsole.log(`${prefix}先打印`);
2024-04-02 09:56:05
416
原创 IOC与DI
当执行start的时候 main.ts的内容就会被执行,那么 nest 就会从 AppModule 开始解析 class 上通过装饰器声明的依赖信息,自动创建和组装对象。我们可以看到在app.service,他声明了 @Injectable,代表这个 class 可注入,那么 nest 就会把它的对象放到 IOC 容器里。在之前我们说到过,app.module中是不是已经引用了user.module了,那么他现在他就可以注入exports 的 UserService 了。中代码的实现是需要依赖。
2024-04-01 16:08:48
733
原创 Nest cli
项目开发离不开工程化的部分,比如创建项目、编译构建、开发时 watch 文件变动自动构建等。Nest它在 @nestjs/cli 这个包里提供了 nest 命令。
2024-04-01 10:26:58
895
原创 React18 后台管理模板项目:现代、高效与灵活
🎉 给大家推荐一款React18+Typescript+Vite+zustand+Antd+unocss且超级好用的中后台管理框架。
2024-03-15 21:21:52
1222
原创 运算符总结
其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。逻辑 NOT 运算符。检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。检查左边值是否大于右边值,如果是返回 True 否则返回 False。检查左边值是否小于右边值,如果是返回 True 否则返回 False。
2023-11-03 14:11:08
167
原创 字符串的常用操作
返回子串substr在字符串s中最后一次出现的索引位置,如果未找到则返回-1。返回子串substr在字符串s中第一次出现的索引位置,如果未找到则返回-1。在字符串s中将old替换为new,替换次数为n,如果n为-1则替换所有。根据空白字符(空格、制表符、换行符等)将字符串s拆分为一个字符串数组。将字符串s转换为小写形式,并根据指定的地区locale进行特殊处理。判断字符串s是否包含子串substr,返回布尔值。将字符串s重复count次,返回一个新的字符串。返回字符串s中子串substr出现的次数。
2023-11-03 14:03:45
176
原创 go语言基础之基本数据类型
定义: 位、字节和字都是描述计算机数据单元或储存单元的术语,一般指储存单元位(bit)是最小的储存单元,可储存0或1,是计算机内存的基本构建块字节(byte)是常用的计算机储存单位,1字节=8位,8位就有256(2的8次方)种0、1的组合,即可0~255的整数或一组字符字(word)是设计计算机时给定的自然储存单位,不同的电脑字长可能不同,对于8位的微型计算机,字长就是8位,32位计算机,1字=32位=4字节,64位计算机,1字=64位=8字节,现在的个人计算机通常都是64位,即1字=64位。
2023-10-13 17:27:55
343
原创 Windows上安装 Go 环境
下面这个是配置代理,当然你也可以用其他的,他默认的是GOPROXY=https://proxy.golang.org,direct 这个在国内很慢,所以我们要重新设置下,我这设置的是七牛云的,你也可以设置其他的。这个一直下一步就行。
2023-09-28 15:33:54
415
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人