首页 > 解决方案 > 我可以避免将整个实体用于使用 TypeOrm 的相关表上的数据吗?

问题描述

我在 TypeOrm 上有那些具有 N:N 关系的示例实体:

export default class Model extends BaseEntity {
  @ManyToMany(type => Market, market => market.id,{ onDelete: 'CASCADE'})
  @JoinTable({ 'name': 'model_enabled_markets' })
  marketsEnabled: Market[];
  //...
}
export default class Market extends BaseEntity {
  @ManyToMany<Model>(type => Model, model => model.id,{ onDelete: 'RESTRICT'})
  enabledModels: Promise<Model[]>;
  //...
}

当将一个新的 Model 实例保存到数据库时,如果我有需要放置在 id 上的 id marketsEnabled,有什么方法可以直接使用它们吗?或者我是否需要使用这些 ID 查询所需的市场,并为它们分配一个数组?

标签: typeorm

解决方案


TypeORM 期望所有实体对象(将)存在于关系数组中(这是必要的,例如,因为cascade 选项)。id除此之外,打字稿还需要一个与模型匹配的对象,因此仅传递一个带有字段的对象可能是不够的。

要直接操作连接表,最好自己创建一个实体类。这允许您添加或删除单个外部 id 行,而无需先加载链接实体对象的导航属性(关系数组)中的所有关系条目。


推荐阅读