graphql - 为什么在Relay/GraphQL连接中需要边缘?

标签 graphql relayjs

在Relay / GraphQL模式配置中,如tutorial example中那样指定一对多关系(具有分页)

type ShipConnection {
  edges: [ShipEdge]
  pageInfo: PageInfo!
}
type ShipEdge {
  cursor: String!
  node: Ship
}


但是,由ShipEdge建立的一对一连接似乎是多余的。为什么不能将光标移动到ShipConnection并将Ship ID的数组存储为边?

type ShipConnection {
  edges: [Ship]
  pageInfo: PageInfo!
  cursor: String!
}


在一对多关系中,每个edge需要一个额外的对象的设计决策是什么?

最佳答案

edges字段为您提供放置每条边缘数据的位置。例如,您可能想在其中放置creatorpriority字段,分别描述谁添加了边以及关系的重要性。

如果您不需要这种灵活性(或通过连接获得的其他功能,例如分页),则可以使用简单的GraphQLList类型。有关连接和列表之间的区别的更多信息,请参见this answer

关于graphql - 为什么在Relay/GraphQL连接中需要边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33323894/

相关文章:

mongodb - 如何让 GraphQL 在突变时自动插入当前 UTC?

javascript - 如何处理 Relay Modern 上的突变错误?

javascript - 如何使用变量组合查询片段

javascript - GraphQL js 文件上传

graphql - 如何从 Shopify API 获取应用订阅状态

reactjs - readQuery 不适用于 Apollo 和 GraphQL 应用程序中的分页

javascript - 将 graphql 查询与订阅相结合

graphql - GraphQL 中模式级和应用级错误的混合

reactjs - RANGE_ADD 配置中指定的任何 rangeBehaviors 均不匹配

relayjs - 如何将 react-relay 组件添加到故事书?