You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS中Scope工作机制:注入REQUEST后服务是否自动为请求作用域?

问题解答

是的,这个CatsService会自动成为请求作用域。

原因如下:

  • 在NestJS的依赖注入体系中,当一个类注入了请求作用域的提供者(比如示例中的REQUEST令牌对应的请求实例),该类会被自动提升为请求作用域,无需手动添加@Injectable({ scope: Scope.REQUEST })装饰器。
  • Nest会自动追踪依赖链的作用域:只要某个类的依赖中存在请求作用域的对象,这个类就会被调整为请求作用域,以此保证每次请求都能获取到对应的请求上下文实例,避免单例模式下的上下文混乱问题。

补充说明:如果后续有控制器(比如CatsController)依赖这个CatsService,该控制器也会自动变为请求作用域,和你提供的依赖关系示例逻辑一致。

补充完整装饰器后的示例代码:

import { Injectable, Scope, Inject } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { Request } from 'express';

@Injectable()
export class CatsService {
  constructor(@Inject(REQUEST) private request: Request) {}
}

内容的提问来源于stack exchange,提问作者abuzain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:00:56