我正在使用GraphQL查询具有两种数据类型:User
和Group
的数据库。
组具有字段users
,该字段是该组中User
个对象的数组。我在根groups
处有一个字段,该字段返回我所有组的数组。
一个典型的查询可能看起来像这样:
{
groups {
id,
name,
users {
id,
name,
address,
email,
phone,
attitude,
job,
favoriteQuote,
favoriteColor,
birthday
}
}
}
问题是,这些用户中有很多可以属于多个组,并且由于User
具有很多字段,因此可以使响应变得很大。
有没有办法为对象的第一个实例获取一组字段,并为响应中的其他每个实例获取一组不同的字段?
我在响应中每个用户只需要一次name
,job
,email
等,之后只需要id
(之后我就可以进行自己的标准化)。
或者
有没有办法只为组中的所有用户获取id
字段,并返回查询中已引用的所有唯一User
对象的单独数组(不是all [C0 ]对象)?
是否有任何方法可以为对象的第一个实例获取一组字段,并为响应中的每个其他实例获取不同的字段?
没有除非单个项目的类型不同,否则将为列表中的每个项目返回相同的字段集,因为可以为运行时返回的每种类型指定单独的选择集。
是否有办法只获取组中所有用户的id字段,并返回查询中已引用的所有唯一User对象(不是所有User对象)的单独数组?
您可以设计您的架构来适应这一点。有点像
User
您的
{ groups { nodes { id name users { id } } uniqueUsers { id # other fields } } }
解析器将需要处理所有规范化并以适当的形状返回数据。但是,一个更简单的解决方案可能就是反转您的关系:
groups