嵌套JSON的GraphQL Schema?

5

我正在尝试使用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

谢谢。

1个回答

6

好的,我搞明白了。我之前卡在了schema中不同Type必须引用独立的JSON数据的想法上,然而实际上我可以在schema中定义一个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
2
嗨@Shawn,对我有用的是为地址(Address)定义一个单独的类型,然后在StaffType中引用它。我已经编辑了我的答案以展示一个例子。 - Drum
1
感谢@Drum。我为了保险起见提出了一个新问题,并得到了有用的建议-https://stackoverflow.com/questions/50440547/schema-from-nested-json-list?noredirect=1#comment87905259_50440547。谢谢你的回复。 - Shawn
1
你好,你如何处理后续的解析呢?这个模式不意味着现在需要两个解析器,一个是Staff,另一个是Address吗? - Eric Burel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接