prisma - 在 Prisma 中实现 3 向关系
问题描述
我也在Prisma 论坛上问过这个问题。
** 编辑 **:论坛在我提出问题后仅 1 天就被锁定为只读。这肯定会变得可怕,因为没有官方宣布他们是否会在实现承诺的功能后停止开发 Prisma 1。他们当然可以说些什么。TBH,不稳定的 Prisma 网站确实增加了我对 Prisma 的信心,尽管他们的回购中有很多明星。
我是 Prisma 的新手。所以我之间有一个三向关系User
,我想定义。对于 a和 an 的每个关联,存在该关联的 a。如果我要为另一个 ORM 设计一个数据库表,我会创建一个表,其中,和列将它们关联起来。Event
Role
User
Event
Role
event_user
user_id
event_id
role_id
实际上,这 3 列中的一行必须是唯一的。显然,如果 Prisma 能够保护这些约束,那就太好了,但我看到的明显解决方案可能甚至不会出现在 Prisma 1 上。
我目前的设计包括以下内容:
type User {
// ...
eventUsers: [EventUser!]!
}
type Event {
// ...
eventUsers: [EventUser!]!
}
type EventUser {
role: Role!
event: Event!
user: User!
}
这样的设计会使render allxxWhereUniquexx
无法使用,这绝对是维护关系的麻烦。upsert
s 肯定无法用于维持关系。
如何在 Prisma 中建立这样的关系?
User
在某些情况下,每个用户也会有一个全局角色列表,因此和之间已经存在关联Role
。问题涉及每个事件的“本地角色”。
解决方案
如果每个用户已经有各自角色的值,则不需要第三个表(除非您希望将更多信息存储在模态层中,在这种情况下,角色类型应该在角色表中)。
@relation
使用指令设置关系。您可以将其应用于关系中的两个表之一,但为了清楚起见,我将它们应用于事件表。该示例假设用户可以是多个事件的一部分。
表:
enum ROLE_TYPE {
TYPE_ONE
TYPE_TWO
}
User {
user_id: ID! @id
events: [Event!]!
}
Event {
event_id: ID! @id
users: [User!]! @relation(link: INLINE)
}
Role {
role_id: ID! @id
type: ROLE_TYPE
event: Event! @relation(link: INLINE)
user: User! @relation(link: INLINE)
}
您可以在 Prisma网站上阅读有关关系的更多信息
推荐阅读
- python - 如何使用经过训练的数据?
- django - 如何从 DRF 序列化程序传递查询参数
- python - 使用 K 折交叉验证计算 R2 分数和 RMSE
- php - 检索与 Stripe 一起使用的促销代码
- css - 引导程序仅导入网格错误?
- c - C:带有 void 指针的可变参数函数
- web-scraping - 搜索引擎如何在不被阻止的情况下抓取网站?
- javascript - 如何将两个特定对象值转换为元组项数组?
- python - Firebase RealTime db 使用 python ,如何检查用户名是否存在
- python - 如何使用 Beautifulsoup 获取跨度标题