如何通过 GraphQL 查询包含非空字段的可空数据?

Posted

技术标签:

【中文标题】如何通过 GraphQL 查询包含非空字段的可空数据?【英文标题】:How to Query nullable data that contains non-null fields via GraphQL? 【发布时间】:2018-12-03 10:27:20 【问题描述】:

假设我的数据结构如下:

house: 
    id: Int,
    address: String,
    neighborhood (Foreign Key, Nullable): 
        id: Int,
        name: String,
        city (Foreign Key, Nonnull): 
            id: Int (Nonnull)
            name: String
        
    

我正在构建以下查询:


    homes 
        house 
            id
            address
            neighborhood 
                id
                name
                city 
                    id
                    name
                
            
        
    

GraphQL(React Apollo 前端,Graphene + Django 后端)抱怨说,当我尝试此查询时,我试图为非 null city.id 返回 null。这特别发生在没有邻域(也没有城市)的房屋中,因此当它实际上不应该深入到数据结构中时,它会尝试将 city.id 返回为空,因为父邻域为空。

我试图在可用时获取有效的社区详细信息(包括城市),在不可用时获取null 社区。什么是合适的方法?

【问题讨论】:

【参考方案1】:

我不得不处理数据库中的数据的问题。上面的查询按预期工作,但我有一些损坏的数据导致查询无法成功完成。

我能够使用 https://github.com/graphql/graphiql 进行调试,这让我可以快速连续地进行 GQL 查询,帮助我准确地探查是什么数据字段触发了我的错误。

【讨论】:

以上是关于如何通过 GraphQL 查询包含非空字段的可空数据?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase,Swift:返回类型上的可空性说明符冲突,“可空”与现有说明符“非空”冲突

非空日期如何在视图中变为可空

Kotlin - 可空字段的非空 getter

GraphQL 查询 - 抑制非空错误并返回部分数据

SQL Server 2008 在具有空间索引的可空地理列上的性能

如何在不编写长查询的情况下查询所有 GraphQL 类型字段?