2015-12-05 16 views
10

Nowe wyrażenie @relay(pattern: true) zostało wprowadzone w change log dla relay.js0.5.Cel @relay (wzór: true)

Ale nie mogę dowiedzieć się z opisu ani sprawdzić, co dokładnie robi i kiedy powinienem go użyć podczas pisania fatQueries.

Przykład może być bardzo pomocny.

Odpowiedz

7

Rozważmy zapytanie GraphQL tak:

viewer { 
    friends(first: 10) { 
    totalCount 
    edges { node { name } } 
    pageInfo { hasNextPage } 
    } 
} 

Podczas definiowania fat query dla mutacji Relay, aby podać nazwę pola bez określenia jego podpól mówi Relay że dowolny podpola z pole może się zmienić w wyniku tej mutacji.

Niestety pominąć argumenty połączeń, takich jak find, first i last na polu friends spowoduje błąd sprawdzania poprawności na połączenie-argumentów zależne pól edges i pageInfo:

getFatQuery() { 
    return Relay.QL` 
    fragment on AddFriendMutationPayload { 
     viewer { 
     friends { edges, pageInfo } # Will throw the validation error below 
     } 
    } 
    `; 
} 

// Uncaught Error: GraphQL validation/transform error ``You supplied the `pageInfo` 
// field on a connection named `friends`, but you did not supply an argument necessary 
// to do so. Use either the `find`, `first`, or `last` argument.`` in file 
// `/path/to/MyMutation.js`. 

można użyć @relay(pattern: true) Dyrektywa wskazująca, że ​​chcesz użyć kwerendy grubej do wzorzec dopasowania przeciwko śledzone kwerendy, zamiast używać go jako pełnowartościowe kwerendy.

getFatQuery() { 
    return Relay.QL` 
    fragment on AddFriendMutationPayload @relay(pattern: true) { 
     viewer { 
     friends { edges, pageInfo } # Valid! 
     } 
    } 
    `; 
} 

Aby uzyskać więcej informacji na temat mutacji patrz: https://facebook.github.io/relay/docs/guides-mutations.html#content

+0

Hmmm ... Myślałem, że to się automatycznie. Cytując z powyższego linku do dokumentu: 'To tłuste zapytanie wygląda jak każde inne zapytanie GraphQL, z jednym ważnym rozróżnieniem. Wiemy, że niektóre z tych pól nie są skalarne (np. FriendEdge i przyjaciele), ale zauważmy, że nie nazwaliśmy żadnego z ich dzieci przez podzapytanie. W ten sposób informujemy Przekaźnika, że ​​wszystko pod tymi nie-skalarnymi polami może się zmienić w wyniku tej mutacji. " –

+1

Hunh. Też pisałem te dokumenty. Będę musiał zadzwonić do znajomego na ten temat. @JoeSavona, do czego służy dyrektywa wzorcowa? – steveluscher

+0

Zadzwonił do znajomego. Edytuję moją odpowiedź! – steveluscher