【问题标题】:nestjs REQUEST scoped service providernestjs REQUEST 范围服务提供者
【发布时间】:2020-06-05 03:23:01
【问题描述】:

我正在尝试在其他服务中使用我的自定义记录器服务,但我注意到当我向其他服务提供记录器服务时不再调用任何生命周期挂钩

有我的记录器服务的代码

@Injectable({ scope: Scope.REQUEST })
export class LoggerService {
    constructor(
        @Inject(REQUEST) private readonly payload: RequestContextHost<RequestPayloadWithCorrelationId, TcpContext>
    ) {}
  .... // other methods
}

我需要这个类来获取唯一的请求 id 并记录它,但是我在另一个实现 OnModuleInit 方法的服务中使用了这个服务,所以当我向这个服务提供记录器时,它只是不调用 onModuleInit 方法

也许获取记录器的请求 ID 是错误的?

【问题讨论】:

    标签: nestjs


    【解决方案1】:

    不为请求范围的依赖调用生命周期钩子as per the docs

    上面列出的生命周期挂钩不会为请求范围的类触发。请求范围的类与应用程序生命周期无关,它们的生命周期是不可预测的。它们专为每个请求创建,并在响应发送后自动进行垃圾收集。

    您似乎需要另一种方法来使用请求范围的记录器,至少对于此类。

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2018-05-17
      相关资源
      最近更新 更多