我在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查询所需的市场,并为其分配一个数组?
答案 0 :(得分:1)
TypeORM期望所有实体对象(将)存在于关系数组中(例如,由于cascade option,这是必要的)。除此之外,打字稿还需要一个与模型匹配的对象,因此仅传递带有id
字段的对象可能是不够的。
要直接操作联接表,最好将create it yourself作为实体类。这样,您无需先在链接的实体对象的导航属性(关系数组)中加载所有关系条目,就可以添加或删除单个外部id行。