我正在开发一个社交媒体项目,并使用 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])
}
我很困惑为什么“关注者”指向“关注”,反之亦然。有人可以解释一下吗?
这些标签的相互性本质上存在一些歧义:
我认为,在Follow模型中,“follower”是指谁是follow,而“following”是前者的follower的用户。
然后,对于 User 模型,请考虑这一点:您的“关注者”是那些关注您的人,而您的“关注者”是那些您是追随者的人。
另外,我不确定这是否代表一对多关系或多对多关系。
从概念上讲,Follow 是用户与其自身的 n 对 n 关系,代表哪些用户正在关注哪些用户,反之亦然:它无论如何都实现为从用户到关注的two 1 对 n 关系(其中 Follow 是所谓的“交叉表”)。