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. 自定义类装饰器

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

相关推荐
王中阳Go14 小时前
面试官问"你怎么证明它有效",200个转AI的后端没几个答得上来
人工智能·后端·面试
流星。。方15 小时前
企业官网前端组件怎么拆?从落地页到内容页的分层思路
前端
deli00715 小时前
豹纹和斑马纹是怎么长出来的:调两个参数,花纹自己浮现
前端
进击的明明15 小时前
TypeScript速通笔记(上)
前端·面试·typescript
deli00715 小时前
萤火虫为什么会一起闪:调一个耦合系数,整片林子自己同步
前端
深入云栈15 小时前
Netty 4.2.x 源码深度解析 (十四):KQueue 传输 —— macOS 高性能 IO 的 Netty 实现
java·后端
一只公羊15 小时前
在 Ubuntu 26.04 LTS (Root) 下使用 uv 丝滑安装 Microsoft MarkItDown
后端
计算机魔术师15 小时前
英伟达联合超100家伙伴推出开放代理安全平台
前端
看谷秀15 小时前
arkts-12 鸿蒙生态/卡片
前端·arkts