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
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. " –
Hunh. Też pisałem te dokumenty. Będę musiał zadzwonić do znajomego na ten temat. @JoeSavona, do czego służy dyrektywa wzorcowa? – steveluscher
Zadzwonił do znajomego. Edytuję moją odpowiedź! – steveluscher