Соедините шлюз и службу вместе друг с другом/циклическая зависимость

#nestjs

Вопрос:

У меня есть один Gateway и другой Service в одном модуле, шлюзу нужен доступ к службе для работы, но я также хочу внедрить шлюз в службу, которой нужна ссылка для отправки событий непосредственно клиентам.

Инъекция только одним способом работает, но не обоими способами.

Возможно ли это или какое решение было бы предпочтительным? Сохраняя только один способ инъекции и добавляя другой в качестве обратного вызова?

Ответ №1:

Вы пытались решить эту проблему с помощью циклических зависимостей?

Как правило, вам просто нужно использовать forwardRef в обоих инъекционных классах

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