【发布时间】:2017-08-13 07:22:54
【问题描述】:
我有这个 graphql 查询,它查找与项目关联的所有服务(给定它的 id ),并且对于每个服务,它返回有权访问的用户列表。
query Project ($id: ID!) {
services {
mailService {
users
}
}
}
我想知道传递id 参数并在users 解析器函数中使用它的最佳解决方案是什么。
我正在考虑这些解决方案:
- 在查询中为 mailService 和 users 节点添加 $id 参数。
- 在服务器的graphql中间件中,将参数对象添加到上下文字段(来自request.body)
- 在项目解析器的上下文对象中添加一个字段:context.projectId = $id 并在子字段解析器中使用它。
感谢您的帮助
【问题讨论】:
-
为什么您的
users解析器需要知道项目ID?从 API 消费者的角度来看,我觉得这会让人感到困惑。 -
主要原因是因为我需要调用 2 个不同的 Rest API 来获取项目基本信息并获取有权访问服务的用户列表。第二个 API 有 2 个参数:projectId 和服务标识符。
标签: graphql graphql-js apollo apollo-server