【发布时间】:2019-05-28 06:43:11
【问题描述】:
在 Prisma 中,我想对以下内容进行建模,但我不确定如何。
type Event {
id: ID! @unique
players: [User]! @relation(name: "EventPlayers")
teams: [Team]! @relation(name: "EventTeams")
...
}
type User {
id: ID! @unique
eventsPlayed: [Event]! @relation(name: "EventPlayers")
...
}
type Team {
id: ID! @unique
event: Event! @relation(name: "EventTeams")
members: [User]! @relation(name: ?????)
...
}
约束
- 每个
team member必须在Event.players中 - 每个
Event.player只能分配给一个(或没有)团队
问题
我觉得我需要一个多对多的关系,但我正在努力解决这个问题。我将Team.members 与 ????? 联系起来是什么。我是否正确地接近这个?
更多信息(如果有帮助)
我打算创建一个拖放界面来创建团队。那些在Events.players 中列出但尚未被分配为Team.member 的人将在unassigned 存储桶中。将它们拖到一个团队中,会将它们分配为 Team.member。但是,我想以events { players { id }} 和events { teams { members { id }}} 查询所有玩家
更新
在考虑了更多之后,我正在考虑一种不同的方法来解决这个问题。这是一个更新的架构,我很喜欢你的想法/意见。
type Event {
id: ID! @unique
users: [EventUser!]!
teams: [Team!]!
title: string
}
type EventUser {
event: Event!
user: User!
role: EventRole!
}
type User {
id: ID! @unique
events: [EventUser!]!
name: string
}
type Team {
event: Event!
members: [EventUser!]!
name: string
}
enum EventRole {
ADMIN
COORDINATOR
JUDGE
PLAYER
REVIEWER
SPONSOR
}
【问题讨论】:
标签: graphql prisma prisma-graphql