![](/img/trans.png)
[英]how to get deep nested json from a query on self relation table in prisma
[英]How to query/update a self-relation in Prisma?
我有一些直接取自 Prisma 示例之一的自我关系表。
model User {
id Int @id @default(autoincrement())
name String?
followedBy Follows[] @relation("follower")
following Follows[] @relation("following")
}
model Follows {
follower User @relation("follower", fields: [followerId], references: [id])
followerId Int
following User @relation("following", fields: [followingId], references: [id])
followingId Int
@@id([followerId, followingId])
}
我想知道确定用户是否正在关注另一个用户的最佳/最惯用的方法,以及关注和取消关注的操作。 我认为最好的方法是直接查询/更新 Follows 表,但我不确定用户 model 中的 followedBy 和 following 字段是否会自动更新。
考虑这个例子:
const createUsers = await prisma.user.createMany({
data: [
{
name: 'user1',
},
{
name: 'user2',
},
{
name: 'user3',
},
],
});
const followUsers = await prisma.follows.createMany({
data: [
{
followerId: 1,
followingId: 2,
},
{
followerId: 1,
followingId: 3,
},
{
followerId: 2,
followingId: 3,
},
],
});
const findFollowersThroughUser = await prisma.socialUser.findMany({
where: {
following: {
some: {
followerId: 1,
},
},
},
});
console.log('findFollowersThroughUser', findFollowersThroughUser);
const findFollowersThroughFollow = await prisma.follows.findMany({
where: {
followerId: 1,
},
include: {
following: true,
},
});
console.log('findFollowersThroughFollow', findFollowersThroughFollow);
这是 output:
findFollowersThroughUser [ { id: 2, name: 'user2' }, { id: 3, name: 'user3' } ]
findFollowersThroughFollow [
{
followerId: 1,
followingId: 2,
following: { id: 2, name: 'user2' }
},
{
followerId: 1,
followingId: 3,
following: { id: 3, name: 'user3' }
}
]
为了在有人取消关注时更新关系,在这种情况下需要从follows
表中显式删除记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.