使用数据转换拦截器,这个感觉可以用来统一数据字段啥的,毕竟仅靠人为控制,不够绝对可控

This commit is contained in:
Jeremy Yin 2019-06-20 21:46:54 +08:00
parent ad0359f4f4
commit d56b4f21db
2 changed files with 14 additions and 3 deletions

View File

@ -1,9 +1,18 @@
import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common'; import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
export interface Response<T>{
data: T;
}
@Injectable() @Injectable()
export class TransformInterceptor implements NestInterceptor { export class TransformInterceptor<T> implements NestInterceptor<T, Response<T>> {
intercept(context: ExecutionContext, next: CallHandler): Observable<any> { intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
return next.handle(); return next
.handle()
.pipe(
map(item => ({data: item})) // 这个map和js那个map貌似还是有点不一样那边返回的是一个数组呀
);
} }
} }

View File

@ -5,6 +5,7 @@ import { DemoFilter } from '../../core/filters/demo.filter'
import { DemoAuthGuard } from '../../core/guards/demo-auth.guard' import { DemoAuthGuard } from '../../core/guards/demo-auth.guard'
import { Roles } from '../../core/decorators/roles.decorator' import { Roles } from '../../core/decorators/roles.decorator'
import { LoggingInterceptor } from '../../core/interceptors/logging.interceptor' import { LoggingInterceptor } from '../../core/interceptors/logging.interceptor'
import { TransformInterceptor } from '../../core/interceptors/transform.interceptor'
@Controller('posts') @Controller('posts')
// @UseGuards(DemoAuthGuard) // @UseGuards(DemoAuthGuard)
@ -15,6 +16,7 @@ export class PostsController {
constructor(private readonly demoService: DemoService) {} constructor(private readonly demoService: DemoService) {}
@Get() @Get()
@UseInterceptors(TransformInterceptor)
index() { index() {
return this.demoService.findAll(); return this.demoService.findAll();
} }