簡體   English   中英

NestJS 網關依賴注入

[英]NestJS Gateway dependency injection

我有一個名為“PlayerService”的服務,網關調用“Player Gateway”,PlayersGateway 具有 PlayerService 的依賴項,但我無法在網關內注入服務。

播放器網關

@UseInterceptors(RedisPropagatorInterceptor)
@WebSocketGateway()
@Injectable()
export class PlayerGateway
  extends BaseGateway
  implements OnGatewayConnection, OnGatewayInit, OnGatewayDisconnect {

constructor(private playerService: PlayerService) {
    super();
  }

播放器服務

@Injectable()
export class PlayerService extends BaseService<Player> {
  protected fieldsSearchable: FieldsSearchable = {};

  private logger = new Logger('PlayerService');

  constructor(
    @InjectRepository(PlayerRepository)
    repository: PlayerRepository,
    @Inject(REQUEST) protected request: Request,
    private redisService: RedisService,
  ) {
    super();
    this.setRepository(repository);
  }

播放器模塊

@Module({
  imports: [
    TypeOrmModule.forFeature([Player, PlayerRepository]),
    RedisModule,
    SocketModule,
    RedisPropagatorModule,
  ],
  controllers: [PlayerController],
  exports: [TypeOrmModule, PlayerService],
  providers: [PlayerService, PlayerGateway],
})
export class PlayerModule {}

模塊.ts

@Module({
  imports: [
    RedisModule,
    SocketModule,
    RedisPropagatorModule,
    SessionModule,
    PlayerModule,
  ],
  exports: [RedisModule, SocketModule],
  controllers: [],
  providers: [ServerGateway, NetworkGateway],
})

我想知道的是如何在網關內注入服務或制作類似 rsrs 的方法

您的 PlayerService 正在嘗試注入請求:

@Inject(REQUEST) protected request: Request

這對於構建網關實例沒有意義,因為它應該獨立於任何單獨的 HTTP 請求。 你真的需要訪問PlayerService中的請求嗎? 如果是這樣,您將不得不將其拆分為單獨的服務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM