GraphQL查询中的数据归一化

问题描述 投票:0回答:2

我正在使用GraphQL查询具有两种数据类型:UserGroup的数据库。

组具有字段users,该字段是该组中User个对象的数组。我在根groups处有一个字段,该字段返回我所有组的数组。

一个典型的查询可能看起来像这样:

{
    groups {
        id,
        name,
        users {
            id,
            name,
            address,
            email,
            phone,
            attitude,
            job,
            favoriteQuote,
            favoriteColor,
            birthday
        }
    }
}

问题是,这些用户中有很多可以属于多个组,并且由于User具有很多字段,因此可以使响应变得很大。

有没有办法为对象的第一个实例获取一组字段,并为响应中的其他每个实例获取一组不同的字段?

我在响应中每个用户只需要一次namejobemail等,之后只需要id(之后我就可以进行自己的标准化)。

或者

有没有办法只为组中的所有用户获取id字段,并返回查询中已引用的所有唯一User对象的单独数组(不是all [C0 ]对象)?

graphql normalization
2个回答
0
投票

是否有任何方法可以为对象的第一个实例获取一组字段,并为响应中的每个其他实例获取不同的字段?

没有除非单个项目的类型不同,否则将为列表中的每个项目返回相同的字段集,因为可以为运行时返回的每种类型指定单独的选择集。

是否有办法只获取组中所有用户的id字段,并返回查询中已引用的所有唯一User对象(不是所有User对象)的单独数组?

您可以设计您的架构来适应这一点。有点像

User

您的{ groups { nodes { id name users { id } } uniqueUsers { id # other fields } } } 解析器将需要处理所有规范化并以适当的形状返回数据。但是,一个更简单的解决方案可能就是反转您的关系:

groups

-1
投票

一般-通常

© www.soinside.com 2019 - 2024. All rights reserved.