Передача экземпляра заводского класса через промежуточное ПО Express

#typescript #express #dependency-injection #middleware #factory

#typescript #экспресс #внедрение зависимостей #промежуточное программное обеспечение #фабрика

Вопрос:

Я работаю с микросервисом NodeJS / Express и пытаюсь получить экземпляр всех моих необходимых объектов класса, необходимых для определенного маршрута.

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

В настоящее время мой маршрутизатор выглядит так:

 ModelRoute.post(
  '/',
  ModelController.factoryCreate(),
  ModelController.validateData(),
  ModelController.sendData(),
  ModelController.sendResponse(),
);
  

factoryCreate — это функция контроллера, которая создает экземпляр фабрики:

   factoryCreate() {
    return (req: Request, res: Response, next: NextFunction) => {
      let factory = Container.get(AbstractFactory);
      res.locals.Class = factory.getClass();
      res.locals.Client = factory.getClient();
      res.locals.Response = factory.getResponse();
      return next();
    };
  }
  

Как вы можете видеть, я передаю объекты через res.locals, но надеюсь, что смогу сделать это на уровне контроллера?

И это мой заводской класс:

 @Service('AbstractFactory')
export default class AbstractFactory {
  constructor(
    private _Client: extClient,
    private _Class: extClass,
    private _Response: extResponse,
  ) {}

  getClient(): extClient {
    return this._Client;
  }

  getClass(): extClass {
    return this._Class;
  }

  getResponse(): extResponse {
    return this._Response;
  }
}
  

Любой способ улучшить структуру этого кода был бы оценен. Я использую typedi для DI.