了解 Prisma 数据模型中的用户关系和关注功能

问题描述 投票:0回答:1

我正在开发一个社交媒体项目,并使用 Prisma 实现“关注”功能。在处理此问题时,我遇到了下面给出的代码,其中用户模型中的关系似乎被交换了。我很困惑为什么“关注者”指向“关注”,反之亦然。有人可以解释一下吗?另外,我不确定这是否代表一对多关系或多对多关系。

// Define the User model
model User {
   id        Int      @id @default(autoincrement())
   username  String   @unique
   // ... other user properties
  
👉 followers User[] @relation("Following")
👉 following User[] @relation("Follower")
}

// Define the Follow model to represent the relationship between users
model Follow {
  id          Int     @id @default(autoincrement())
  follower    User    @relation("Follower", fields: [followerId], references: [id])
  followerId  Int
  following   User    @relation("Following", fields: [followingId], references: [id])
  followingId Int
  
  @@unique([followerId, followingId])
}
database-design prisma data-modeling
1个回答
0
投票

我很困惑为什么“关注者”指向“关注”,反之亦然。有人可以解释一下吗?

这些标签的相互性本质上存在一些歧义:

我认为,在Follow模型中,“follower”是指谁是follow,而“following”是前者的follower的用户。

然后,对于 User 模型,请考虑这一点:您的“关注者”是那些关注您的人,而您的“关注者”是那些您是追随者的人。

另外,我不确定这是否代表一对多关系或多对多关系。

从概念上讲,Follow 是用户与其自身的 n 对 n 关系,代表哪些用户正在关注哪些用户,反之亦然:它无论如何都实现为从用户到关注的two 1 对 n 关系(其中 Follow 是所谓的“交叉表”)。

© www.soinside.com 2019 - 2024. All rights reserved.