如何在 Apollo GraphQL 解析器的一个函数中解析 2 种不同的方法?
Posted
技术标签:
【中文标题】如何在 Apollo GraphQL 解析器的一个函数中解析 2 种不同的方法?【英文标题】:How to resolve 2 different methods in one function on Apollo GraphQL resolver? 【发布时间】:2019-04-25 13:19:46 【问题描述】:我有这个解析器
SLAccount: (_, imsUserId, imsToken , context) =>
new Promise((resolve, reject) =>
addAuth(context, imsUserId, imsToken);
context.model
.getUserAccount(getEndpoint(imsUserId, imsToken))
.then(resolve)
.catch(reject);
),
但我需要在其中包含另一种方法/模型:
getHardware(endpoint)
return this.connector
.get(
`$endpoint/...`,
)
.catch(res => this.handleError(res));
所以我需要这样的东西:
SLAccount: (_, imsUserId, imsToken , context) =>
new Promise((resolve, reject) =>
addAuth(context, imsUserId, imsToken);
context.model
.getUserAccount(getEndpoint(imsUserId, imsToken))
.then(resolve)
.catch(reject);
context.model
.getHardware(getEndpoint(imsUserId, imsToken))
.then(resolve)
.catch(reject);
),
问题是我不需要同时调用它们,有时我只需要 SLAccount
中的这些方法/模型之一。
那么处理这个问题的最佳方法是什么?
【问题讨论】:
【参考方案1】:GraphQL 由需求(查询)驱动。
当您需要 account
时,只需查询即可。当您需要 account
和相关的 hardware
时,只需查询两者 - 将自动调用额外的解析器。这是 graphQL 背后的基本思想。寻找任何涉及 graphQL 关系的教程。
【讨论】:
以上是关于如何在 Apollo GraphQL 解析器的一个函数中解析 2 种不同的方法?的主要内容,如果未能解决你的问题,请参考以下文章
Apollo Server v2 - 未调用 GraphQL 解析器
如何在 apollo graphql 服务器中编写解析 graphql 过滤器
如何使用 Apollo 分离 GraphQL 模式和解析器文件?
如何在 Apollo GraphQL Server 中添加字段解析器