同一实体的多对多TypeOrm

时间:2020-09-28 05:31:27

标签: postgresql typeorm

我试图弄清楚如何创建一个在包含其他用户实体的好友列上具有关系的用户实体。通过userId对的联接表联接。 这类作品:

@Entity('user')
export class User {
  @PrimaryGeneratedColumn('uuid')
  id: string;
  @ManyToMany(
    () => User,
    (user) => user.friends
  )
  @JoinTable()
  friends: User[];
}

它确实创建了一个关系,我可以用id填充联接表并检索数据,但这似乎只是一种方法。

这是联接表:

 userId_1 | userId_2 
------------+------------

我的意思是,链接似乎来自userId_1-> userId_2,而不是两种。 有什么办法可以改善吗?我希望能够基于一个行条目从任一侧获取关系

1 个答案:

答案 0 :(得分:0)

您需要添加关系的另一侧。我使用“followers”而不是“friends”,因为这清楚地反映了每个关系的方向。

这样你就可以做一些类似 user.followersuser.following

@ManyToMany(() => User, (user) => user.following)
@JoinTable()
followers: User[];
    
@ManyToMany(() => User, (user) => user.followers)
following: User[];