
Funkcja:
Input object 'oneOf'
Input object 'oneOf'
Input object oneOf to szczególny typ input object, w którym dokładnie jedno z pól wejściowych musi zostać podane jako wartość — w przeciwnym razie serwer zwraca błąd walidacji. To zachowanie wprowadza polimorfizm dla wejść w GraphQL, umożliwiając projektowanie bardziej przejrzystych schematów.
Na przykład, pobieranie użytkownika w naszej aplikacji mogłoby być realizowane na podstawie różnych właściwości, takich jak ID użytkownika lub adres e-mail. Aby to zrobić, normalnie musielibyśmy utworzyć oddzielne pole dla każdej właściwości:
type Query {
userByID(id: ID!): User
userByEmail(email: String!): User
}Dzięki input object oneOf możemy zamiast tego mieć jedno pole user, które przyjmuje wszystkie właściwości za pośrednictwem input object oneOf UserByInput, wiedząc, że tylko jedna z właściwości (ID lub adres e-mail) może i musi być podana:
type Query {
user(by: UserByInput!): User
}
input UserByInput @oneOf {
id: ID
email: String
}W query podajemy wartość wejściową dla dokładnie jednej z właściwości:
{
tom: user(by: {
id: 1
}) {
name
}
jerry: user(by: {
email: "jerry@warnerbros.com"
}) {
name
}
}