总结
Provider
不同的创建&声明&使用方式
标准方法(useClass)
创建

声明


使用


token 为字符串
创建同上
声明

使用

useValue
创建&声明

使用

useFactory
创建&声明

使用同上
注意
- provider 可以注入其他 provider
- useFactory 支持异步
- useExisting 指定别名
- 所有以类式写的功能,middleware,guard,interceptor,pipe,exceptionfilter 都可以注入 provider
MiddleWare
创建
typescript
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response } from 'express';
@Injectable()
export class AaaMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: () => void) {
console.log('brefore');
next();
console.log('after');
}
}使用



注意
- 可以注入 provider
- @Next()修饰器调用下一个同路由 handle

Guard
创建

使用


Interceptor
创建

使用

Pipe
创建

使用
对某个参数

对某个路由

对所有路由

ExceptionFilter
创建

使用



Decorator
创建
基础装饰器

合并装饰器
typescript
import { applyDecorators, Get, UseGuards } from '@nestjs/common';
import { Aaa } from './aaa.decorator';
import { AaaGuard } from './aaa.guard';
export function Bbb(path, role) {
return applyDecorators(
Get(path),
Aaa(role),
UseGuards(AaaGuard)
)
}参数装饰器
typescript
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const Ccc = createParamDecorator(
(data: string, ctx: ExecutionContext) => {
return 'ccc';
},
);使用

参数装饰器使用方法

注意
- 装饰器可以使用到类,方法,参数上