10

在更改日志@relay(pattern: true)引入了新的表达式。relay.js 0.5

但是无法从描述中弄清楚,也无法测试它到底做了什么以及在编写时应该何时使用它fatQueries

一些例子会很有帮助。

4

1 回答 1

7

考虑如下 GraphQL 查询:

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

在为 Relay 突变定义胖查询时,包含字段名称而不指定其任何子字段会告诉 Relay,该字段的任何子字段都可能因该突变而更改。

不幸的是,在字段上省略连接参数(例如findfirst和)将导致依赖于连接参数的字段和出现验证错误:lastfriendsedgespageInfo

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

于 2015-12-05T23:11:34.723 回答