我有一个用于typeorm库的包装器类,其中包含许多功能。
用于检索已持久保存的数据的所有get函数都可以与getRepository一起正确运行。
但是当我想动态获取存储库时,typeorm告诉我:
错误:找不到“平台”的存储库。看起来该实体未在当前“默认”中注册
但是我创建了一个init()函数,该函数将向我返回相同的连接类型(如果存在)或创建的连接类型如下:
async init()
{
let connection
if (!typeorm.getConnectionManager().has('default'))
{
connection = await this.createConnection()
}
else
{
connection = typeorm.getConnectionManager().get('default')
}
return connection
}
和createConnection()函数创建名称为“ default”的对象连接,如下所示:
createConnection()
{
return typeorm.createConnection({
name: 'default',
type: 'sqlite',
database: './src/data/mydb.sql',
entities: [
Public,
Genre,
Platform,
Theme,
Game,
],
synchronize: true
})
}
连接管理器类中可以正确获取存储库的函数:
async getAll(entity)
{
let connection = await this.init()
let model = this.selectEntityModel(entity)
const entityRepository = typeorm.getRepository(model)
return entityRepository.createQueryBuilder("query").getMany()
}
另一个无法正确获取存储库:
selectEntityRepository(entity)
{
let repository
switch (entity)
{
case 'public':
repository = typeorm.getRepository(Public)
break
case 'genre':
repository = typeorm.getRepository(Genre)
break
case 'theme':
repository = typeorm.getRepository(Theme)
break
case 'platform':
repository = typeorm.getRepository(Platform)
break
case 'game':
repository = typeorm.getRepository(Game)
break
}
return repository
}
您可以在此处查看整个类的声明:Gist
我不明白为什么该类中的几个函数都无法获取Repository,而其他函数却不能。
错误typeorm告诉我,要检索存储库的连接名称为“默认”,并且我以“单一”样式为所有实体声明创建了“默认”连接,以始终获得相同的连接。