Appearance
装饰器
⭐⭐⭐⭐⭐
Nest 是基于装饰器这种语言特性而创建的。在很多常见的编程语言中,装饰器是一个广为人知的概念,但在 JavaScript 世界中,这个概念仍然相对较新,目前还处于 ECMA 提案中。
Nest装饰器
Nest 自带的装饰器,来自 @nestjs/common。
常用装饰器:
| 名称 | 说明 |
|---|---|
| @Module | 声明 Nest 模块 |
| @Controller | 声明 Nest 控制器 |
| @Injectable | 声明模块里可以注入的 provider |
| @Inject | 指定注入的 provider |
| @Global | 声明全局模块 |
| @SetMetadata | 设置元数据 |
| @Get | 声明 get 请求方式 |
| @Post | 声明 post 请求方式 |
| @Query | 取出通过 get 方式传递的参数,参数装饰器 |
| @Body | 取出通过 post 方式传递的参数,参数装饰器 |
注意:参数装饰器需要以参数传递的方式才能正常使用。
更多装饰器请看:Nest装饰器
自定义装饰器
本项目自己封装的装饰器,来自 src/decorator。
| 名称 | 说明 |
|---|---|
| @Admin | 权限验证,JWT和权限守卫的集合 |
| @Permission | 用于设置后台权限,已被 @Admin 集成 |
| @Member | 验证博客的会员登录并返回会员信息,参数装饰器 |
| @User | 获取后台用户 jwt 中的用户信息,参数装饰器 |
| @UserAgent | 获取用户设备信息,参数装饰器 |
| @ClientIp | 获取客户端真实IP,参数装饰器 |
注意:参数装饰器需要以参数传递的方式才能正常使用。
Swagger装饰器
Swagger 文档使用的装饰器,来自 @nestjs/swagger。
常用装饰器:
| 名称 | 类型 | 说明 |
|---|---|---|
| @ApiOperation | Method | 接口名称 |
| @ApiResponse | Method / Controller | 接口返回信息 |
| @ApiBearerAuth | Method / Controller | 需要验证登录 |
| @ApiTags | Method / Controller | 接口分组(模块名) |
| @ApiQuery | Method | 声明 query 参数信息 |
| @ApiProperty | Model | 声明一个必填字段 |
| @ApiPropertyOptional | Model | 声明一个选填字段 |
更多装饰器请看:Swagger装饰器
TypeORM装饰器
TypeORM 使用的装饰器,来自 typeorm 和 @nestjs/typeorm。
常用装饰器:
| 名称 | 类型 | 说明 |
|---|---|---|
| @Entity | 实体 | 将模型标记为实体 |
| @Column | 列 | 声明一个数据库字段 |
| @CreateDateColumn | 列 | 特殊列,自动设置为实体的插入时间 |
| @UpdateDateColumn | 列 | 特殊列,每次从实体管理器或存储库调用 save 时自动设置为实体更新时间 |
| @PrimaryGeneratedColumn | 列 | 标记主键 |
| @OneToOne | 关系 | 标记一对一关系 |
| @ManyToOne | 关系 | 标记多对一关系 |
| @OneToMany | 关系 | 标记一对多关系 |
| @ManyToMany | 关系 | 标记多对多关系 |
| @BeforeInsert | 订阅 | 插入实体之前调用 |
| @BeforeUpdate | 订阅 | 更新现有实体之前调用 |
| @Unique | 其他 | 创建唯一约束 |
更多装饰器请看:TypeORM装饰器
参数验证装饰器
验证传入的参数时使用的装饰器,来自 class-validator。关于 class-validator 的更多配置信息请看官网
常用装饰器:
| 名称 | 类型 |
|---|---|
| @IsBoolean | 是否为布尔值 |
| @IsNotEmpty | 是否不为空('', null, undefined) |
| @Equals(comparison: any) | 是否等于 |
| @IsDate | 是否为日期 |
| @IsString | 是否为字符串 |
| @IsNumber | 是否为数字 |
| @IsArray | 是否为数组 |
| @IsPositive | 是否为大于0的正数 |
| @Max(max: number) | 是否大于或等于给定的数字 |
| @MaxDate(date: Date) | 为指定日期之前的日期 |
| @IsEmail | 是否为电子邮件 |
更多装饰器请看:参数验证装饰器
