如何向控制器注入服务?

时间:2019-12-12 16:48:08

标签: node.js service controller swagger

我正在使用集成了Swagger UI的nodejs构建应用程序。我已经建立了我的服务文件。我有一个带有POST请求的控制器,该请求包含三个参数source,productCodes,vehicleType。当用户在控制器中输入这3个参数时,应将这3个参数传递给服务文件中的getData函数并执行逻辑。我发现很难通过传递参数将服务文件注入控制器文件中。

这是我的controller.ts代码

@Controller('/service/api/message')
export class MessageController {
  source: string;
  productCodes: string;
  vehicleType: string;

  constructor(
    private readonly messagePublishService: MessagePublishService,
    private messageService: MessageService,
  ) {}

  @Post()
  async generateMessage(@Body() productEvent: ProductEvent) {
    console.log('productEvent:', productEvent);
    let message = new ProductMessage();
    message.productCode = productEvent.productCodes;

    this.messageService.getData(
      this.source,
      this.productCodes,
      this.vehicleType,
    );

    this.messagePublishService.publish(message);
    return 'success';
  }
}

这是我的服务。


@Injectable()
export class MessageService {
  constructor(private readonly httpService: HttpService) {}

  getData(
    source: string,
    productCodes: string, //['IPB', 'COMP239', 'JEFEA']
    vehicleType: string, //['Separate Account', 'SICAV Fund']
  ): Observable<any> {
    var json = '';

    const urls = [
      'https://awstrp.net/sitemap/retrieve/ide',
    ];

      for (var i = 0; i < urls.length; i++) {
        return https.get(urls[i], res => {
          res.on('data', function(chunk) {
            json += chunk;
          });
          res.on('end', function() {
            var result = JSON.parse(json);

          });
        });
      }

  }
}


0 个答案:

没有答案