当前位置: 首页 > 知识库问答 >
问题:

通过它的名称(字符串)访问TypeORM存储库

祁柏
2023-03-14

例如,我有照片、公司、汽车等实体。我知道它们有同名的列,我可以通过QueryBuilder访问它们。我不知道我将处理哪个存储库,但它像字符串参数一样传递给我的函数。这样地:

function haveAccess(user, entity, entityId) {
 // model is string like 'photo', 'company', 'car'
}

事实上,我想检查用户是否可以通过单独的函数访问给定ID的实体,而不是绑定到一个实体。

是否可以仅通过字符串初始化TypeORM中实体的存储库或QueryBuilder?

共有1个答案

笪智志
2023-03-14

您可以获得如下存储库:

import {getRepository} from "typeorm";
import {User} from "./entity/User"; 

const userRepository = getRepository(User); // you can also get it via getConnection().getRepository() or getManager().getRepository()

connection.getRepository()可以接受三样东西,一个Object(用@Entity注释),一个EntitySchema或一个字符串。

getRepository<Entity>(target: ObjectType<Entity> | EntitySchema<Entity> | string): Repository<Entity>;

所以在typescript中,可以是:

connection.getRepository<MyEntity>(MyEntity)
 类似资料:
  • 问题内容: 我正在尝试使用字符串数组从XML获取资源,因为它当前处于循环中。 谁能建议我该怎么做? 为了清楚起见,资源名称与数组字符串名称相同。 到目前为止,我已经尝试过: 问题答案: 我没有误会你 是你所需要的

  • 问题内容: 如果我将函数名称存储为字符串在Hashtable中。 有没有办法通过存储的字符串访问函数? 编辑恐怕我在CLDC1.1 / MIDP2.0上工作的平台不支持反射。 有什么解决方法? 问题答案: 只需使用一长串else-ifs: (尽管我通常不喜欢尝试在源代码中进行垂直对齐,但我认为在这种情况下这样做是值得的。) 在映射中存储函子是一种替代方法,对于许多MIDP应用程序,bu可能会增加对

  • 问题内容: 如何在名称为动态并存储在字符串变量中的类中设置或获取字段? 问题答案: 您必须使用反射: 使用获得的参考。如果它不是公开你需要调用,而不是 用于在不公开的情况下访问该字段 使用设置的值,或类似名称的方法之一,如果它是一个原始 这是一个处理公共领域简单案例的示例。如果可能的话,更好的选择是使用属性。

  • 问题内容: 这是一个不起作用的简单go程序: 错误: prog.go:18:无效的操作:v [属性](*顶点类型的索引) 我想要的是使用名称访问Vertex X属性。如果我这样做,它会起作用,但不会。 有人可以告诉我如何进行这项工作吗? 问题答案: 大多数代码都不需要这种动态查找。与直接访问相比,它效率低下(编译器知道Vertex结构中X字段的偏移量,可以将vX编译为单个机器指令,而动态查找则需要

  • 我在 Azure 表存储中有下表名称。表名是在我的应用程序中自动生成的,然后使用表创建。创建如果不存在(表名)。有些有效,有些则不然。当我深入研究错误时,扩展的错误信息告诉我资源名称包含无效字符 - 但是我无法弄清楚失败名称中无效的内容 - 任何人都可以发现这一点吗? -指定的资源名称包含无效字符 -指定的资源名称包含无效字符 –工程

  • 我有一个非常简单的Hibernate设置,但我收到这个奇怪的错误时,保存一个实体: org.hibernate.property.access.spi.属性访问字段[私有java.lang.字符串com.example.demo.Student.first名称]通过反射为持久属性[com.example.demo.学生#firstName]:学生[id=0, firstName=My, lastN