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

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

相关推荐
丘山子几秒前
一些鲜为人知的 IP 地址怪异写法
前端·后端·tcp/ip
志存高远6613 分钟前
Kotlin 的 suspend 关键字
前端
CopyLower24 分钟前
在 Spring Boot 中实现 WebSockets
spring boot·后端·iphone
www_pp_25 分钟前
# 构建词汇表:自然语言处理中的关键步骤
前端·javascript·自然语言处理·easyui
天天扭码1 小时前
总所周知,JavaScript中有很多函数定义方式,如何“因地制宜”?(ˉ﹃ˉ)
前端·javascript·面试
一个专注写代码的程序媛1 小时前
为什么vue的key值,不用index?
前端·javascript·vue.js
장숙혜1 小时前
ElementUi的Dropdown下拉菜单的详细介绍及使用
前端·javascript·vue.js
.生产的驴1 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
火柴盒zhang1 小时前
websheet之 编辑器
开发语言·前端·javascript·编辑器·spreadsheet·websheet
某公司摸鱼前端1 小时前
uniapp 仿企微左边公司切换页
前端·uni-app·企业微信