Node.js TypeForm:无法读取属性';反向连接列';保存时未定义的属性

Node.js TypeForm:无法读取属性';反向连接列';保存时未定义的属性,node.js,typescript,orm,entity,typeorm,Node.js,Typescript,Orm,Entity,Typeorm,用例:如果用户尚未在数据库中创建,则创建它-如果用户已经存在,则更新它 这样做的逻辑是可行的。由于TypeORM的.save()会更新实体或在不可用时更新实体,因此我希望使用此方法 我的问题是:创建作品而不是更新。执行此操作时,它会从RelationIdLoader抛出此错误: this.userRepository.save(user); // user = newly created or updated entity TypeError:无法读取未定义的属性“inverseJoinCol

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

这样做的逻辑是可行的。由于TypeORM的
.save()
会更新实体或在不可用时更新实体,因此我希望使用此方法

我的问题是:创建作品而不是更新。执行此操作时,它会从
RelationIdLoader
抛出此错误:

this.userRepository.save(user); // user = newly created or updated entity
TypeError:无法读取未定义的属性“inverseJoinColumns”

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

更新
正如@pleerock所指出的,所有
@manytomy
都必须在拥有方包含
@JoinTable
装饰器

因此,解决我实际问题的具体办法如下:

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

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

显示实体,您可能必须设置实体关系wrongly@pleerock就这么做了。感谢您查看。如果您使用
@manytomy
,则必须同时放置
@JoinTable
装饰器(仅在拥有方,因为您具有单向关系,所以只将其放置在此处)。这就解决了问题。非常感谢这个伟大的图书馆@pleerock。接下来还有一个问题:)请找时间回答您自己的问题,并接受它以改善StackOverflow的用户体验。拥有方指更新关系的一方?@Nicu示例:一个查找由数据中心的id分配给数据中心。因此,数据中心“拥有”查找结果[]。
@ManyToMany(type => DataCenter)
@JoinTable()
public dataCenterResponsiblities: DataCenter[];

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