-1

我在 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
    }
  }
}

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

任何人都可以提供一个可能的解决方案来确保条件到位,说只有在俱乐部已经存在时才能创建团队。

4

1 回答 1

0

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

通常创建突变返回已创建类型,fecreateUser返回User... 和突变参数 - 输入类型 ( UserInput) - 具有与返回类型几乎相同的形状 (没有id)。

确保createTeam具有正确(现有)俱乐部关系的最简单方法是将俱乐部定义为变异的必需参数。

于 2020-05-15T22:57:40.823 回答