nest 记录(三)

nest 记录(三)

统一返回格式

需要用到管道

1
2
3
4
5
6
7
8
import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';import { Observable } from 'rxjs';import { map } from 'rxjs/operators';@Injectable()
export class TransformInterceptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
return next.handle().pipe(
map((data) => ({
code: 200, data, message: 'success', })), ); }
}
// main.tsimport { TransformInterceptor } from './interceptor/transform.interceptor';app.useGlobalInterceptors(new TransformInterceptor());

统一错误捕捉

1
2
3
4
5
import { ArgumentsHost, Catch, ExceptionFilter, HttpException } from '@nestjs/common';import { Response } from 'express';@Catch(HttpException) // 这里只捕捉了httpExceptionexport class HttpExceptionFilter implements ExceptionFilter {
catch(exception: any, host: ArgumentsHost) {
const context = host.switchToHttp(); const response = context.getResponse<Response>(); const status = exception.getStatus(); const message = exception.message; response.status(status).json({ // 和上面的返回格式一样 code: status, data: null, message: message, }); }
}
// main.tsimport { HttpExceptionFilter } from './common/filter/httpException.filter';app.useGlobalFilters(new HttpExceptionFilter());

知道这些就可以写一个demo了。像mysql连接这些不需要记录。
连接后定义sql就行