
Возможность:
Input object 'oneOf'
Input object 'oneOf'
Input object oneOf — это особый тип input object, в котором ровно одно из входных полей должно быть передано в качестве входного значения, иначе сервер возвращает ошибку валидации. Это поведение вводит полиморфизм для входных данных в GraphQL, позволяя проектировать более чистые схемы.
Например, получение пользователя в нашем приложении может осуществляться по различным свойствам, таким как ID пользователя или email. Для этого нам обычно потребовалось бы создать отдельное поле для каждого свойства:
type Query {
userByID(id: ID!): User
userByEmail(email: String!): User
}Благодаря input object oneOf мы можем вместо этого иметь единственное поле user, принимающее все свойства через input object oneOf UserByInput, зная, что только одно из свойств (ID или email) может и должно быть передано:
type Query {
user(by: UserByInput!): User
}
input UserByInput @oneOf {
id: ID
email: String
}В запросе мы передаём входное значение ровно для одного из свойств:
{
tom: user(by: {
id: 1
}) {
name
}
jerry: user(by: {
email: "jerry@warnerbros.com"
}) {
name
}
}