尝试获取数据时GraphQL中的空值[重复]
Posted
技术标签:
【中文标题】尝试获取数据时GraphQL中的空值[重复]【英文标题】:Null value in GraphQL when trying to fetch data [duplicate] 【发布时间】:2020-05-05 12:48:23 【问题描述】:为什么我在尝试从外部 API 获取数据时收到空值?
这是我的代码
解析器.js
import fetch from 'node-fetch'
export const resolvers =
Query:
getCrypto: async() =>
const response = await fetch(`https://min-api.cryptocompare.com/data/top/totalvolfull?limit=10&tsym=USD`)
return response.json();
,
;
schema.grapqhl
type CryptoCurrency
Id: ID
Name: String
FullName: String
PRICE: Float
LASTUPDATE: Float
type Query
getCrypto: CryptoCurrency
错误截图:
【问题讨论】:
当您浏览到所使用的网址时会发生什么? 您从中获取数据的 API 返回的对象的形状与架构的形状不匹配。请参阅常见场景 #1 和常见场景 #3 here。 【参考方案1】:您的 API 返回一个数组,因此应更改您的代码,如下所示。(对于第一项)
getCrypto: async () =>
const response = await fetch(`https://min-api.cryptocompare.com/data/top/totalvolfull?limit=10&tsym=USD`)
let data = await response.json()
return data.Data[0].CoinInfo;
或者,如果您打算检索所有名称,请先将您的查询更改为接受为数组
type Query
getCrypto: [CryptoCurrency]
getCrypto: async () =>
const response = await fetch(`https://min-api.cryptocompare.com/data/top/totalvolfull?limit=10&tsym=USD`)
let data = (await response.json()).Data.map(c => return c.CoinInfo )
return data
【讨论】:
添加了 ``return data.Data[0].CoinInfo`` 并且它工作了 Alex,谢谢你的帮助 欢迎您,但请注意您的 API 返回一个数组,因此您可以拥有 0,1,2,..n 索引以上是关于尝试获取数据时GraphQL中的空值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在grails中解析JSON时如何获取真正的空值而不是JSONObject.NULL值
将数据插入 MySQL 数据库时使用 PHP 替换 CSV 文件中的空值