在更改日志中@relay(pattern: true)
引入了新的表达式。relay.js
0.5
但是无法从描述中弄清楚,也无法测试它到底做了什么以及在编写时应该何时使用它fatQueries
。
一些例子会很有帮助。
考虑如下 GraphQL 查询:
viewer {
friends(first: 10) {
totalCount
edges { node { name } }
pageInfo { hasNextPage }
}
}
在为 Relay 突变定义胖查询时,包含字段名称而不指定其任何子字段会告诉 Relay,该字段的任何子字段都可能因该突变而更改。
不幸的是,在字段上省略连接参数(例如find
、first
和)将导致依赖于连接参数的字段和出现验证错误:last
friends
edges
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`.
您可以使用该@relay(pattern: true)
指令来指示要使用 fat 查询对跟踪的查询进行模式匹配,而不是将其用作成熟的查询。
getFatQuery() {
return Relay.QL`
fragment on AddFriendMutationPayload @relay(pattern: true) {
viewer {
friends { edges, pageInfo } # Valid!
}
}
`;
}
有关突变的更多信息,请参阅:https ://facebook.github.io/relay/docs/guides-mutations.html#content