Typescript 尝试使用tsyringe和typeorm进行依赖项注入时遇到问题
我正在尝试学习依赖注入,并在一个项目中实现它,已经用了一个星期了,tsyringe和mongoose一起使用,它还可以,但由于某种原因,当我尝试用typeorm时 我了解到注入失败的原因是没有找到默认连接,但没有必要在mt其他mongoose项目中设置此tsyringe连接强> 这是控制器代码、模型代码和路由代码,我隐藏了create方法,因为我知道问题不存在,因为我已经测试了很多次,任何tipo或建议都会有帮助,可能不在ormconfig.json中,但我还是会把它放在那里,因为我不确定:Typescript 尝试使用tsyringe和typeorm进行依赖项注入时遇到问题,typescript,express,typeorm,Typescript,Express,Typeorm,我正在尝试学习依赖注入,并在一个项目中实现它,已经用了一个星期了,tsyringe和mongoose一起使用,它还可以,但由于某种原因,当我尝试用typeorm时 我了解到注入失败的原因是没有找到默认连接,但没有必要在mt其他mongoose项目中设置此tsyringe连接 这是控制器代码、模型代码和路由代码,我隐藏了create方法,因为我知道问题不存在,因为我已经测试了很多次,任何tipo或建议都会有帮助,可能不在ormconfig.json中,但我还是会把它放在那里,因为我不确定: imp
import { Request, Response } from "express"
import { autoInjectable } from "tsyringe";
import { Repository } from "typeorm";
import {TeamEntity} from "../models/team.model";
@autoInjectable()
export default class TeamController {
private repo: Repository<any>
constructor(repo?: TeamEntity) {
this.repo = repo.repo;
}
create = async (req: Request, res: Response) =>{
// creates a new team
}
}
// team.controller.ts
{
“类型”:“postgres”,
“数据库”:“postgres”,
“密码”:“,
“日志记录”:正确,
“实体”:[
“src/models/*.model.ts”
],
“迁移”:[
“src/migrations/*.migration.ts”
],
“cli”:{
“entitiesDir”:“src/models/”,
“migrationsDir”:“src/migrations/”
}
}
\\ormconfig.json
问题在于我在完全连接到数据库之前实例化了控制器,我找到的解决方案是使用tsyringe的延迟装饰器,并去掉private属性,控制器类保持如下状态:
constructor(@inject(delay(() => TeamService)) public TeamService: TeamService) {
}
import { Router } from "express";
import TeamController from "./controllers/team.controller";
const teamController = new TeamController();
const appRouter = Router();
appRouter.post("/teams", () => teamController.create);
export default appRouter;
//routes.ts
{
"type": "postgres",
"database": "postgres",
"password": "<password>",
"logging": true,
"entities": [
"src/models/*.model.ts"
],
"migrations": [
"src/migrations/*.migration.ts"
],
"cli": {
"entitiesDir": "src/models/",
"migrationsDir": "src/migrations/"
}
}
\\ ormconfig.json
constructor(@inject(delay(() => TeamService)) public TeamService: TeamService) {
}