迁移指南
迁移指南
本文提供了一套指导方针
,从4迁移到最新的5.0版本。在开发过程中,我们花了很多时间来避免任何重大变化。然而,API必须在许多地方进行更改以简化其使用。此外,由于早期阶段做出的决定,之前的版本受到限制。现在,我们不那么自以为是,甚至比以前更加强大。
模块
为了减少Nest和Angular之间的差异数量,关于@Module()装饰器的改变很少。
modules
属性现已弃用。请imports
改用
components
属性现已弃用。请providers
改用
装饰
的@Component()
,@Middleware()
,@Interceptor()
,@Pipe()
,和@Guard()
现在已被弃用。请@Injectable()
改用。
中间件接口
该MiddlewaresConsumer
课程已更改为MiddlewareConsumer
。此外,ExpressMiddleware
不再存在,请改用MiddlewareFunction
界面。
过滤器
异常过滤器不再作为单一范例锁定。以前,异常过滤器可以访问该response
对象。与传入版本一起,catch()
方法取代ArgumentsHost
实例。这个对象在这里有很好的描述。多亏了这一点,您可以访问每个参数,包括response
对象。
JS
// Before
@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {
catch(exception: HttpException, response) {}
}
// After
@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {
catch(exception: HttpException, host: ArgumentsHost) {
const response = host.switchToHttp().getResponse(
// ...
}
}
逆天
与过滤器一样,防护装置现在更加灵活
。访问增强版ExecutionContext
(阅读更多内容)为警卫提供了更多的超级大国,所有这些都建立在简化的API之上。
JS
// Before
@Guard()
export class RolesGuard implements CanActivate {
canActivate(
dataOrRequest,
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
return true;
}
}
// After
@Injectable()
export class RolesGuard implements CanActivate {
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
// const request = context.switchToHttp().getRequest(
// const data = context.switchToWs().getData(
return true;
}
}
拦截器
拦截器API的演变方式与等效的
防护API 完全相同。
JS
// Before
@Interceptor()
export class TransformInterceptor implements NestInterceptor {
intercept(
dataOrRequest,
context: ExecutionContext,
stream$: Observable<any>,
): Observable<any> {
return stream$.map((data) => { data })
}
}
// After
@Injectable()
export class TransformInterceptor implements NestInterceptor {
intercept(
context: ExecutionContext,
call$: Observable<T>,
): Observable<Response<T>> {
// const request = context.switchToHttp().getRequest(
// const data = context.switchToWs().getData(
return call$.pipe(map(data => { data }))
}
}
自定义装饰器
该createRouteParamDecorator()
函数已弃用。立即使用createParamDecorator()
。
Node.js的
我们遵循最近8.x作为活动LTS版本移动的Node.js发布计划。因此,Nest 5现在支持> = 8.9.0作为最低版本。由于es2017TypeScript编译的目标,这一转变为我们带来了可持续的性能提升。
外部图书馆
Nest 5不支持rxjs <6.0.0。请记住升级此软件包。