我有一个名为"PlayerService“的服务,网关调用"Player Gateway",PlayersGateway依赖于PlayerService,但不能在网关内注入o服务。
PlayerGateway
@UseInterceptors(RedisPropagatorInterceptor)
@WebSocketGateway()
@Injectable()
export class PlayerGateway
extends BaseGateway
implements OnGatewayConnection, OnGatewayInit, OnGatewayDisconnect {
constructor(private playerService: PlayerService) {
super();
}
PlayerService
@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);
}
PlayerModule
@Module({
imports: [
TypeOrmModule.forFeature([Player, PlayerRepository]),
RedisModule,
SocketModule,
RedisPropagatorModule,
],
controllers: [PlayerController],
exports: [TypeOrmModule, PlayerService],
providers: [PlayerService, PlayerGateway],
})
export class PlayerModule {}
Modules.ts
@Module({
imports: [
RedisModule,
SocketModule,
RedisPropagatorModule,
SessionModule,
PlayerModule,
],
exports: [RedisModule, SocketModule],
controllers: [],
providers: [ServerGateway, NetworkGateway],
})
我想知道的是,如何在网关中注入服务,或者如何生成类似于这个rsrs的东西。
发布于 2020-12-29 18:45:54
您的PlayerService正在尝试插入请求:
@Inject(REQUEST) protected request: Request
这对于构建网关实例没有意义,因为它应该独立于任何单独的HTTP请求。您实际上需要访问PlayerService
中的请求吗?如果是这样的话,您将不得不将其分割成不同的服务。
https://stackoverflow.com/questions/65494767
复制相似问题