diff --git a/packages/core/src/component.ts b/packages/core/src/component.ts index 1f4354577b63..d9042ffbd4ba 100644 --- a/packages/core/src/component.ts +++ b/packages/core/src/component.ts @@ -14,7 +14,9 @@ export interface Component { // tslint:disable-next-line:no-any controllers?: Constructor[]; providers?: ProviderMap; - servers?: Constructor[]; + servers?: { + [name: string]: Constructor; + }; // tslint:disable-next-line:no-any [prop: string]: any; @@ -41,8 +43,8 @@ export function mountComponent(app: Application, component: Component) { } if (component.servers) { - for (const server of component.servers) { - app.server(server); + for (const serverKey in component.servers) { + app.server(component.servers[serverKey], serverKey); } } } diff --git a/packages/core/test/unit/application.test.ts b/packages/core/test/unit/application.test.ts index adc48a712db0..c4d0f542483e 100644 --- a/packages/core/test/unit/application.test.ts +++ b/packages/core/test/unit/application.test.ts @@ -65,9 +65,14 @@ describe('Application', () => { }); class FakeComponent implements Component { - servers: Constructor[] = []; + servers: { + [name: string]: Constructor; + }; constructor() { - this.servers.push(FakeServer); + this.servers = { + FakeServer, + FakeServer2: FakeServer, + }; } } diff --git a/packages/rest/src/rest-component.ts b/packages/rest/src/rest-component.ts index 987b87f0f7c6..f3116e8441b1 100644 --- a/packages/rest/src/rest-component.ts +++ b/packages/rest/src/rest-component.ts @@ -43,13 +43,18 @@ export class RestComponent implements Component { [RestBindings.SequenceActions.PARSE_PARAMS]: ParseParamsProvider, [RestBindings.SequenceActions.SEND]: SendProvider, }; - servers: Constructor[] = []; + servers: { + [name: string]: Constructor; + }; + constructor( @inject(CoreBindings.APPLICATION_INSTANCE) app: Application, @inject(RestBindings.CONFIG) config?: RestComponentConfig, ) { if (!config) config = {}; - this.servers.push(RestServer); + this.servers = { + RestServer: RestServer, + }; } }