如何在GraphQL中正确配置以返回字符串数组?
问题排查:GraphQL中
flickr_images返回null的解决方法 核心问题
你的links字段的resolve函数返回了完整的Launch数据对象,但UrlType定义的字段(mission_patch_small、flickr_images)实际是SpaceX API返回的Launch对象里links子对象的属性。直接返回整个Launch对象的话,GraphQL会在根对象里查找这些字段,自然找不到对应值,所以返回null。
修复方案
修改links字段的resolve函数,让它返回Launch数据里的links子对象,而非整个Launch数据:
links: { type: UrlType, args: { flight_number: { type: GraphQLInt }, }, resolve(parent, args) { return axios .get(`https://api.spacexdata.com/v3/launches/${args.flight_number}`) .then((res) => res.data.links); // 改为返回links子对象 }, },
额外验证点
- 确认SpaceX API返回的Launch数据结构:
flickr_images确实是links对象下的数组类型字段 - 检查查询语句是否正确请求了目标字段,示例查询:
query GetLaunch($flightNumber: Int!) { launch(flight_number: $flightNumber) { links { flickr_images mission_patch_small } } }
内容的提问来源于stack exchange,提问作者Johan Lourens
相关产品推荐
相关产品推荐

