假设我有这个 GraphQL 查询:
query GetUser($user_id: Int) {
user(user_id: $user_id) {
name
}
groups(user_id $user_id) {
name
}
}
此查询接收用户 ID,并返回:
我知道
user
应该在 SDL 中定义如下:
type Query{
user(user_id: Int): User
}
并且服务器应该定义一个名为
user
的解析器函数。
但是 - 我可以确定
groups
字段的定义方式相同吗?
更具体地说 - 我能否确定在查询中引用
groups
是可能的,即像这样:
query Groups($user_id: Int) {
groups(user_id: $user_id) {
name
}
}
谢谢
简短回答:是的。单个客户端查询可以引用多个查询,每个查询都需要它自己的解析器。如果你愿意的话,你甚至可以在那里添加一个突变。
但是,您也可以增强您的
User
类型以包含 groups
字段。从建模和查询的角度来看,这都会更清晰。
type User {
id: ID!
name: String!
groups: [Group]
}
那么您的查询可能是:
query GetUser($user_id: Int) {
user(user_id: $user_id) {
name
groups {
name
}
}
}
groups
类型下的User
解析器将从解析器中的parent
参数获取用户的ID。