![](/img/trans.png)
[英]Connection “default” was not found with TypeORM when trying to request a repository
[英]TypeORM Connection "default" was not found when using a routes file and repository pattern
我有一个使用 TypeORM 的 TS 项目。 我正在使用存储库模式,所以我有层:Controller -> 服务 -> 存储库。
Controller 构造函数初始化 Service class 初始化 Repository class,其中构造函数为:
constructor(){
this.ormRepository = getRepository(TypeormEntity)
}
当我像这样在index.ts
中创建路由时,这很好用:
createConnection().then(() => {
const controller = new MyController()
app.get('/', controller.getSomething);
})
创建连接,然后我使用new MyController()
初始化 class。
问题是当我想在另一个文件中获取路由时。 我想得到这个结构文件夹:
src
|--> index.ts
|--> routes
|--> v1
|--> router.ts
|--> value
|--> value.route.ts
|--> v2
|--> ...
因此,为了实现这一点, index.ts
导入了路由。 但问题是,导入完成后,执行了MyController()
构造函数,但执行失败。
所以我想在index.ts
中有这样的东西
import * as express from 'express'
import { createConnection } from "typeorm";
import Router from './routes/v1/router'
const app = express()
createConnection().then(() => {
app.use('/', Router)
app.listen(port)
})
此外,在 import 调用之后, routes/v1
中的文件router.ts
是:
import { json, Router } from 'express'
import valueRouter from './value/value.route'
const router = Router()
router.use(json())
router.use('/value', valueRouter)
export default router
这是根据它们调用的资源为所有路由添加“前缀”。
而value.route.ts
是 controller 初始化失败的地方。
import { Router } from "express";
import ValueController from '../../../controller/value.controller'
const router = Router()
const vc = new ValueController()
router.get('/',vc.getSomething)
export default router
我已经测试过删除构造函数并且项目初始化正常,所以问题是存储库初始化跨越 Controller 和服务。
我怎样才能做到这一点?
提前致谢。
最后我使用动态导入解决了我自己的问题。
现在我的index.ts
看起来像这样:
createConnection().then(() => {
import('./routes/v1/router').then((router: any) => {
app.use('/', router.default)
app.listen(port)
})
})
我认为这比在这个文件中添加所有路由要干净得多。 在外部文件中调用路由我可以管理大量路由并保持干净的结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.