非常教程

Nest参考手册

迁移指南

迁移指南

本文提供了一套指导方针,从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。请记住升级此软件包。

迁移指南
Nest

Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架