我已经尝试了两天来解决这个问题,也许我根本没有抓住重点。
我的目标是编写一个包含TypeORM的NestJS应用程序,为我小型项目中的2或3个提供RestAPI服务,而不是为每个项目编写一个NestJS应用程序。
到目前为止一切都很好,该应用程序已准备就绪,并与单个项目(这些项目位于子文件夹中,拥有其实体、控制器、服务和模块)良好配合,但我无法使它在所有项目中运行。
关键似乎是配置,我正在使用ormconfig.json
:
[ {
"name": "Project1",
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "<username>",
"password": "<pwd>",
"database": "<database>",
"synchronize": false,
"entities": ["project1/*.entity.ts"],
"subscribers": ["project1/*.subscriber.ts"],
"migrations": ["project1/migrations/*.ts"],
"cli": { "migrationsDir": "project1/migrations" }
}, {
"name": "project2",
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "<another-username>",
"password": "<another-pwd>",
"database": "<another-database>",
"synchronize": false,
"entities": ["project2/*.entity.ts"],
"subscribers": ["project2/*.subscriber.ts"],
"migrations": ["project2/migrations/*.ts"],
"cli": { "migrationsDir": "project2/migrations"
} ]
错误消息为:
[ExceptionHandler] 因为没有在任何orm配置文件中定义,所以无法找到连接“default”
当然,“default”无法找到,因为我提供了两个具有唯一名称的配置,不同于“default”。
在ApplicationModule中,我可以像这样提供连接的名称:
TypeOrmModule.forRoot( { name: "project1" } ),
但这样只适用于一个项目。
我可以将所有内容混合在一个配置中,但那么我就必须将所有内容放在一个数据库中,同一个用户对所有内容进行访问,可能会混淆实体......
有人能给我一些提示如何解决吗?
也许可以在每个模块中使用getConnection(<name>)
,但如何启动ApplicationModule呢?
此致
敬礼
sagerobert
forFeature
导入时,你是否也传递了连接的name
:TypeOrmModule.forFeature([Album], 'albumsConnection')
? - Kim Kern