【问题标题】:GraphQL Schema for Nested JSON?用于嵌套 JSON 的 GraphQL 模式?
【发布时间】:2018-07-23 15:04:03
【问题描述】:

我正在尝试使用 GraphQL 来处理一些 JSON 数据。我可以从顶层检索字段没问题。我可以关联单独的 JSON 对象也没有问题。我的问题发生在试图获取数据下一级。所以,我在我的模式中为员工定义了一个类型。 json 看起来像这样:

"staff": [
 {
   "id": 123,
   "name": "fred",
   "role" : "designer",
   "address": {
     "street": "main street",
     "town": "Springfield"
   }
 },
 ...
]

到目前为止,架构中的相应类型如下所示:

const StaffType = new GraphQLObjectType({
    name: 'Staff',
    fields: {
      id: {type: GraphQLInt},
      name: {type: GraphQLString},
      role: {type: GraphQLString}
    }
})

就检索 id、name 和 role 而言,这可以正常工作。我的问题是如何扩展 StaffType 以同时从原始 JSON 中的 address 字段中检索 streettown

谢谢

【问题讨论】:

    标签: json schema graphql


    【解决方案1】:

    好的,我想通了。我对架构中的不同类型必须引用单独的 JSON 片段的想法感到困惑,而事实上,我可以在架构中定义一个 AddressType 来引用嵌套数据,然后将其包含在 StaffType无需编写解析函数。

    [编辑以添加示例]

    const StaffType = new GraphQLObjectType({
        name: 'Staff',
        fields: {
          id: {type: GraphQLInt},
          name: {type: GraphQLString},
          role: {type: GraphQLString},
          address: {type: AddressType}
        }
    })
    
    const AddressType = new GraphQLObjectType({
        name: 'Address',
        fields: {
          street: {type: GraphQLString},
          town: {type: GraphQLString}
        }
    })
    

    【讨论】:

    • 如果您还处于活动状态。我现在正面临这个问题,您可以提供的任何其他帮助都会有所帮助。
    • 嗨@Shawn,对我有用的是为地址定义一个单独的类型,然后在 StaffType 中引用它。我在上面编辑了我的答案以显示一个示例。
    • 谢谢@Drum。我问了一个新问题以防万一,还收到了有用的建议 - stackoverflow.com/questions/50440547/…。感谢您的回复。
    • 您好,您如何处理之后的解析?这个架构不是意味着您现在需要 2 个解析器,一个用于 Staff,一个用于 Address 吗?
    猜你喜欢
    • 2019-07-27
    • 2019-05-25
    • 2019-06-14
    • 2019-12-21
    • 2021-04-21
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多