2016-08-11 16 views
5

Zastanawiam się, czy istnieje sposób w GraphiQL, który pozwoli mi przesłać wynik z jednego zapytania/mutacji do innego zapytania/mutacji. Oto przykład, w którym mutacja login jest używana do uzyskania viewer, a viewer będzie użyty do wysłania zapytania do użytkownika addresses. Jest to możliwe dzięki GraphQL/GraphiQL.Podejmij wynik z jednego zapytania/mutacji i potoku do innego

mutation { 
    login(credentials: { 
    email: "[email protected]", 
    password: "password123", 
    passwordConfirmation: "password123" 
    }) { 
    viewer 
    } 
} 

query { 
    addresses(viewer:viewer) { 
    city 
    } 
} 
+0

jest takie eksperymentalne batchOperations wyposażone, ale nie sądzę, że wylądował w jeszcze graphql-jS. Otworzyłem tutaj problem. https://github.com/graphql/graphql-js/issues/462 – ThomasReggi

Odpowiedz

1

Celem zestawu selekcji w mutacjach jest umożliwienie pobierania danych, które zmieniły się w wyniku mutacji. Ale umożliwia również pobieranie powiązanych danych, o ile dostęp do nich jest możliwy za pośrednictwem typu wyniku mutacji.

Załóżmy mamy następujące typy:

type Address { 
    city: String 
} 
type User { 
    addresses: [Address] 
} 

Jeżeli wynik (ładowność) rodzaj mutacji login zawiera pole viewer typu User że odnosi się do pomyślnie zalogowany użytkownik, można wyszukać dowolne pole z User w wyniku mutacji:

mutation { 
    login(credentials: { 
    email: "[email protected]", 
    password: "password123", 
    passwordConfirmation: "password123" 
    }) { 
    viewer { 
     addresses { 
     city 
     } 
    } 
    } 
} 
+0

W powyższym przypadku przeglądarka jest identyfikatorem lub tokenem, który umożliwia dostęp do innych elementów interfejsu API. Co twoje przysłowie ma sens, ale to mi nie pomaga. Muszę nadal wysyłać jedną prośbę do odbiorcy (tokena), a następnie skopiować i wkleić go jako argument dla innych mutacji, co jest bummerem. – ThomasReggi

+0

Myślę, że w przypadku zapytań potrzebujesz typu "Użytkownik", który reprezentuje zalogowanego użytkownika i dodaje pola związane z użytkownikiem w tym typie. Następnie możesz dodać odniesienie do 'Użytkownika' w typie wyniku mutacji, abyś mógł go zapytać. Dla mutacji, jak powiedziałeś, prawdą jest, że nie możesz grupować mutacji, które zależą od wyniku poprzedniej mutacji wewnątrz GraphQL, ale powinno być możliwe zbudowanie punktu końcowego partii, który robi to poza językiem zapytania, w twój serwer HTTP. – fson

+2

Myślę, że nadchodzi, po prostu nie jest jeszcze gotowy. github.com/graphql/graphql-js/issues/462 – ThomasReggi

Powiązane problemy