Я пытаюсь передать метод класса в качестве параметра маршрута Express, я пытался связать метод без использования функции стрелки, но он тоже не работал.
Я использую TypeORM и ошибка, которую я получаю, заключается в том, что это «Соединение» по умолчанию «не найдено», но если я напишу полную функцию (как показано ниже) в качестве параметра, все будет работать нормально.
router.get("/", async (_req: Request, res: Response) => {
try {
const projects: Project[] = await new ProjectService().findAll();
res.status(200).send(projects);
} catch (e) {
res.status(404).send(e.message);
}
});
Код ниже не работает.
ProjectRoutes.ts
const router: Router = Router();
const projectController = new ProjectController();
router.get("/", projectController.getAllProjects);
export default router;
ProjectController.ts
export class ProjectController {
projectService: ProjectService = new ProjectService();
getAllProjects = async (_req: Request, res: Response) => {
try {
const projects: Project[] = await this.projectService.findAll();
return res.status(200).send(projects);
} catch (e) {
return res.status(404).send(e.message);
}
};
}
ProjectService.ts
export class ProjectService {
projectRepository: ProjectRepository;
constructor() {
this.projectRepository = getCustomRepository(ProjectRepository);
}
async findAll(): Promise<Project[]> {
return await this.projectRepository.findAll();
}
}
ProjectRepository
@EntityRepository(Project)
export class ProjectRepository extends Repository<Project> {
async findAll(): Promise<Project[]> {
return await this.find();
}
}
Маршруты index.ts
const router: Router = Router();
router.use("/projects", ProjectRoutes);
export default router;
Server.ts
app.use("/", router);