嵌套JSON的GraphQL模式?

Dru*_*rum 4 schema json graphql

我正在尝试使用GraphQL处理一些JSON数据。我可以从顶级检索字段没有问题。我可以关联单独的JSON对象,也没有问题。我的问题正在试图将数据降低一级。因此,我在人员架构中定义了一个类型。json看起来像这样:

"staff": [
 {
   "id": 123,
   "name": "fred",
   "role" : "designer",
   "address": {
     "street": "main street",
     "town": "Springfield"
   }
 },
 ...
]
Run Code Online (Sandbox Code Playgroud)

到目前为止,模式中的对应类型如下所示:

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

只要检索ID,名称和角色,此方法就可以正常工作。我的问题是如何扩展StaffType到原始JSON中的字段streettown从中检索和address

谢谢

Dru*_*rum 5

好的,我知道了。我迷上了架构中必须引用单独的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}
    }
})
Run Code Online (Sandbox Code Playgroud)

  • 嗨,@ Shawn,对我有用的是为Address定义一个单独的类型,然后在StaffType中引用它。我已经编辑了上面的答案以显示示例。 (2认同)