See*_*roy 8 javascript sql node.js typeorm nestjs
在我当前的场景中,第三方将在我的数据库上动态创建表,并将表名称存储为 a varchar,列名称存储jsonb在其他表中,该表在我的 NestJS 后端中定义为实体。
这样我就可以跟踪(和查询)这些表,因为我无法控制它的创建。
为此,我想使用TypeORM而不是使用原始查询,createQueryBuilder因为它更容易使用抽象。
据我所知,TypeORMcreateQueryBuilder需要在子句中定义一个实体from。
像这样的事情:
return await getManager()
.createQueryBuilder()
.select('*')
.from(MyDefinedModel, 'modelAlias')
.getRawMany();
}
Run Code Online (Sandbox Code Playgroud)
所以我想做一些类似的事情:
const tableName = await getDynamicallyGenetaredTableNames().getFirstOne()
// now tableName points to a string that is a table name, i.e 'table-data-192239'
return await getManager()
.createQueryBuilder()
.select('*')
.from(tableName, 'tableAlias')
.getRawMany();
Run Code Online (Sandbox Code Playgroud)
因此,传递表名我指向正确的表,但 TypeORM(和 TS)抱怨,因为这tableName是一个字符串,而不是实体(类)类型
如果有更干净的东西可以实现这一点,我真的不想进行类型转换并开始做一些令人讨厌的事情。我在官方文档中没有找到任何解决方案
有什么绝妙的想法吗?谢谢你们
我们可以传递表名而不是实体getRepository。
let tableName = 'user';
let query = getRepository(tableName).createQueryBuilder(tableName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5119 次 |
| 最近记录: |