首页 > 解决方案 > 相互注入网关和服务/循环依赖

问题描述

我在同一个模块中有一个Gateway和另一个Service,网关需要访问服务才能工作,但我也想将网关注入需要引用以将事件直接发送到客户端的服务中。

仅以一种方式进行注射是有效的,但不是两种方式都有效。

这是可能的还是首选的解决方案是什么?只保留一种方式注入并将另一种方式添加为回调?

标签: nestjs

解决方案


您是否尝试使用Circular Dependencies解决此问题?

通常你只需要forwardRef在两个可注入类中使用

@Injectable()
export class CatsService {
  constructor(
    @Inject(forwardRef(() => CommonService))
    private commonService: CommonService,
  ) {}
}
@Injectable()
export class CommonService {
  constructor(
    @Inject(forwardRef(() => CatsService))
    private catsService: CatsService,
  ) {}
}

推荐阅读