Как я могу обусловить мутацию GraphQL на основе существования?
Я создаю схемы в GraphQl и тестирую их на Playground. Кажется, они отлично подходят для создания клуба, пользователя и команды, но я хочу иметь возможность создавать команду только в том случае, если клуб существует и, следовательно, может подключиться к клубу. Сейчас я могу создать команду без клуба, чего, конечно, не должно быть. При создании Team Mutation я также хочу остановить создание любого клуба, клуб должен существовать до любой мутации в команде.
Вот что у меня есть на данный момент для моих схем
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
}
}
}
оба работают без подключения к клубу.
Может ли кто-нибудь предложить возможное решение для обеспечения наличия условия, согласно которому команда может быть создана только тогда, когда клуб уже существует.
1 ответ
Странные мутации - похоже, они совершенно не относятся к типам.
Обычно create mutation возвращает созданный тип, например createUser
возвращается User
... и аргумент мутации - тип ввода (UserInput
) - почти такой же формы, что и возвращаемый тип (без id
).
Самый простой способ убедиться, что createTeam
имеет правильное (существующее) клубное отношение - это определить клуб как обязательный аргумент мутации.