1

用例:如果尚未在数据库中创建用户,请创建它 - 如果用户已经存在,请更新它。

这样做的逻辑是有效的。由于 TypeORM.save()更新实体或在不可用时更新它们,我想使用这种方法。

我的问题:创作作品但不更新。执行此操作时会引发此错误RelationIdLoader

this.userRepository.save(user); // user = newly created or updated entity

TypeError:无法读取未定义的属性“inverseJoinColumns”

更新的和创建的唯一区别是更新的有一个属id​​性,它是一个 uuid/字符串。

更新

@PrimaryGeneratedColumn('uuid') public id: string;

... // some columns without relations

@OneToMany(type => Finding, finding => finding.reporter)
public reportedFindings: Finding[];

@OneToMany(type => Finding, finding => finding.responsible)
public responsibleFindings: Finding[];

@ManyToMany(type => DataCenter)
public dataCenterResponsiblities: DataCenter[];

@ManyToMany(type => Finding)
public informedFindings: Finding[];
4

1 回答 1

3

正如@pleerock 所指出的,所有人@ManyToMany都必须在拥有方包括@JoinTable装饰器。

所以我的实际问题的具体解决方案如下:

@ManyToMany(type => DataCenter)
@JoinTable()
public dataCenterResponsiblities: DataCenter[];

@JoinTable()
@ManyToMany(type => Finding)
public informedFindings: Finding[];

这实际上在文档中得到了很好的描述。

于 2017-12-22T07:37:50.160 回答