#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.