如果我没记错的话,对于每个用户,您需要以下内容:
- 能够添加/删除
User A到User B的关注者
- 查找关注某个用户的
User 记录。
- 查找
User某个用户正在关注的记录。
您不一定需要明确定义单独的模型。相反,您可以为此使用many-to-manyself-relation。这是您的 User 模型在 Prisma Schema 中的样子
model User {
id String @id @default(uuid()) // or whatever your unique id field is.
following User[] @relation("UserFollows", references: [id])
followers User[] @relation("UserFollows", references: [id])
// ...other fields in user table
}
添加/删除某个用户的关注者
如果用户记录已经存在,您可以像这样添加另一个用户作为关注者:
const updatedUser = await prisma.user.update({
where: {
id: followedUserId,
},
data: {
followers: {
connect: { // change to disconect for removing a follower.
id: followerUserId,
},
},
},
});
您还可以通过将 connect 调用更改为 disconnect 调用来从其他用户的关注者中删除用户。
查找用户的关注者和关注列表。
您可以这样做来获取user 记录以及他们的关注者和关注列表。
const user = await prisma.user.findUnique({
where: {
id: userId,
},
include: {
followers: true, // list of followers for userId
following: true, // list of users that follow userId
},
});
您可以在 Prisma Docs 的 concept guide 中了解有关自我关系的更多信息。