GraphQL 字段必须是查询中要提及的查询类型吗?

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

假设我有这个 GraphQL 查询:

query GetUser($user_id: Int) {
  user(user_id: $user_id) {
    name
  }
  groups(user_id $user_id) {
    name
  }
}

此查询接收用户 ID,并返回:

  1. 用户名
  2. 该用户所属的所有组的名称

我知道

user
应该在 SDL 中定义如下:

type Query{
  user(user_id: Int): User
}

并且服务器应该定义一个名为

user
的解析器函数。

但是 - 我可以确定

groups
字段的定义方式相同吗?

更具体地说 - 我能否确定在查询中引用

groups
是可能的,即像这样:

query Groups($user_id: Int) {
  groups(user_id: $user_id) {
    name
  }
}

谢谢

javascript node.js http graphql client-server
1个回答
1
投票

简短回答:是的。单个客户端查询可以引用多个查询,每个查询都需要它自己的解析器。如果你愿意的话,你甚至可以在那里添加一个突变。

但是,您也可以增强您的

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。

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