我可以避免使用TypeOrm将整个实体用于相关表上的数据吗?

时间:2020-01-16 18:15:24

标签: 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实例保存到数据库时,如果我有需要放置在marketsEnabled上的ID,是否可以直接使用它们?还是我需要使用这些ID查询所需的市场,并为其分配一个数组?

1 个答案:

答案 0 :(得分:1)

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

要直接操作联接表,最好将create it yourself作为实体类。这样,您无需先在链接的实体对象的导航属性(关系数组)中加载所有关系条目,就可以添加或删除单个外部id行。