【问题标题】:Follow/Unfollow Feature NestJS关注/取消关注功能 NestJS
【发布时间】:2022-02-18 04:30:40
【问题描述】:

我正在尝试在我的 NestJS 应用程序中创建一个关注/取消关注系统。目前我有一个用户表和连接器表如下。下表具有以下结构

关注

followerId followingId
1 2
1 3
3 2
  • followerId 创建关注的用户
  • followingId 获得关注的用户

我有两条路线 /follow 在下表中创建一条记录, /unfollow 从下表中删除一条记录。

我正在尝试向 user.entity.ts 添加两个关系属性

  • followers : User [] 关注该用户的所有用户
  • 关注:用户 [] 该用户关注的所有用户

然后,当我想在用户上加载这些关系时,就像在 twitter 上的个人资料一样。

我引用了这篇文章,但它在 rails 中,而 HasMany 似乎不存在于 typeorm 中。 https://levelup.gitconnected.com/how-to-create-a-follow-unfollow-button-in-your-rails-social-media-application-e4081c279bca

【问题讨论】:

  • 你想在用户和关注两个属性的表之间建立一对多的关系吗?

标签: nestjs


【解决方案1】:

您可以在 TypeORM 中使用一对多关系。在用户实体中定义关注者和关注者属性,如下所示。

@OneToMany(() => Follows, follows => follows.following)
followers: Follows[];

@OneToMany(() => Follows, follows => follows.follower)
followings: Follows[];

另外请注意,如果没有 ManyToOne,则无法使用 OneToMany,因此您必须在以下实体中定义以下属性。

@ManyToOne(() => User, user => user.followers)
following: User;

@ManyToOne(() => User, user => user.followings)
follower: User;

我相信有更有效的方法,但根据您解释过的系统的其他部分,这应该可行。

有关更多信息,您可以查看 TypeORM relations 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    相关资源
    最近更新 更多