如何根据存在来调节 GraphQL 突变?



我正在GraphQl中创建模式并在Playground中测试它们。这些似乎在能够创建俱乐部、用户和团队方面工作得很好,但我只希望能够在俱乐部存在的情况下创建一个团队,因此可以连接到俱乐部。目前我可以在没有俱乐部的情况下创建一支球队,这当然不应该发生。在创建团队突变时,我还想停止创建任何俱乐部,俱乐部必须在团队发生任何突变之前存在。

这是我目前对我的架构的看法

type Club {
id: ID! @unique
name: String! @unique
team: [Team!]! @relation(name: "TeamToClub", onDelete: CASCADE)
admin: User! @relation(name: "UserToClub", onDelete: SET_NULL)
}
type User {
id: ID! @unique
name: String!
team: [Team!]! @relation(name: "TeamToUser", onDelete: SET_NULL)
club: [Club!]! @relation(name: "UserToClub", onDelete: SET_NULL)
}
type Team {
id: ID! @unique
name: String!
club: Club! @relation(name: "TeamToClub", onDelete: SET_NULL)
creator: User! @relation(name: "TeamToUser", onDelete: SET_NULL)
coach:[Coach!]! @relation(name: "CoachToTeam", onDelete: SET_NULL)
}

这是我创建用户的突变

mutation {
createUser(
data:{
name:"Jack Jones",
email:"jack@example.com"
}
){
id
name
}
}

并创建一个团队..

mutation {
createTeam(
data:{
title:"Barcelona FC"
agegroup:"Under 12s",
published: false,
coachcreator:{
connect:{
id:"cka8qkd5h02dj0815m3odzh5s"
}
}
}
){
id
title
agegroup
published
coachcreator {
name
}
}
}

两者都无需连接到俱乐部即可工作。

谁能提供一个可能的解决方案来确保一个条件到位,说只有当俱乐部已经存在时才能创建球队。

奇怪的突变 - 看起来它们与类型完全无关。

通常创建突变返回创建类型,例如createUser返回User...和突变参数 - 输入类型 (UserInput( - 与返回类型(不带id(的形状几乎相同。

确保createTeam具有适当的(现有(俱乐部关系的最简单方法是将俱乐部定义为突变的必要参数。

最新更新