尝试获取数据时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中的空值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过 _id 使用 graphQL 获取数据

在grails中解析JSON时如何获取真正的空值而不是JSONObject.NULL值

将数据插入 MySQL 数据库时使用 PHP 替换 CSV 文件中的空值

EXCEL函数去除数组中的0值和空值

访问不允许SQL-Server列中的空值的INSERT或UPDATE(访问运行时错误3162)

如何使用文本框搜索功能返回同一列中的空值和值