nestjs 全栈进阶--自定义装饰器

视频教程

20_nest中自定义装饰器_哔哩哔哩_bilibili

复制代码
nest new custom-decorator -p pnpm

pnpm start:dev

Nestjs 中我们使用了大量装饰器 decorator ,所以Nestjs 也允许我们去自定义装饰器。

1. 自定义方法装饰器

复制代码
nest g decorator aaa --flat

它生产的代码,这个就是Aaa就是我们自定义的装饰器

不知道大家还记不记得我们之前讲过的@SetMetadata,我们快速的回顾一下

复制代码
nest g guard aaa --flat --no-spec

上面就是我们通过nest提供的@SetMetadata装饰器,实现的角色控制守卫,但是不同 metadata 有不同的业务场景,有的是用于权限的,有的是用于其他场景的,这时候就可以在封装一层

我们修改下aaa.decorator

在使用我们写的这个装饰器

效果和之前一样

可以看到我们这里装饰太多了 ,那我们是不是可以自定义个装饰器,把他们整合到一起?

复制代码
nest g d bbb --flat

效果也是和之前的一致

2. 自定义参数装饰器

复制代码
nest g d ccc --flat

data 是传入的参数。 ExecutionContext 前面讲过,可以取出 request、response 对象。

参数装饰器的返回值就是参数的值

我们已经明白了nest中怎么定制参数装饰器了,那我们来实现一个它内置的参数装饰器-@Query

我们先复制一下刚刚的ccc.decorator改名为query.decorator,并修改如下

当然,你还可以使用pipe做参数验证和转换

3. 自定义类装饰器

类装饰器和方法装饰器的定义方式一样,比如:

相关推荐
meichaoWen14 分钟前
【CSS】CSS 面试知多少
前端·css
我血条子呢20 分钟前
【预览PDF】前端预览pdf
前端·pdf·状态模式
90后的晨仔35 分钟前
报错 找不到“node”的类型定义文件。 程序包含该文件是因为: 在 compilerOptions 中指定的类型库 "node" 的入口点 。
前端
90后的晨仔1 小时前
5分钟搭建你的第一个TypeScript项目
前端·typescript
专注前端30年1 小时前
Vue2 中 v-if 与 v-show 深度对比及实战指南
开发语言·前端·vue
90后的晨仔1 小时前
TypeScript是什么?为什么前端必须学它?
前端
武子康1 小时前
大数据-139 ClickHouse MergeTree 最佳实践:Replacing 去重、Summing 求和、分区设计与物化视图替代方案
大数据·后端·nosql
用户47949283569152 小时前
从 58MB 到 2.6MB:我是如何将 React 官网性能提升 95% 的
前端·javascript
该用户已不存在2 小时前
7个让全栈开发效率起飞的 Bun 工作流
前端·javascript·后端
芙蓉王真的好12 小时前
Angular CDK 响应式工具指南:从基础到自适应布局应用
前端·javascript·angular.js