我有一个用例,我使用apollo-server-express
基于 React 的apollo-client
. 我有一些查询的外部graphql-datasource
。目前,我已配置apollo-datasource-graphql
为用作我的apollo-server-express
. 但是,这需要在 Apollo 中的解析器以及我的外部graphql
系统上的解析器上重复工作。
有没有办法让我通过 Apollo 服务器将客户端中的查询传递到外部graphql
数据源?
我有一个用例,我使用apollo-server-express
基于 React 的apollo-client
. 我有一些查询的外部graphql-datasource
。目前,我已配置apollo-datasource-graphql
为用作我的apollo-server-express
. 但是,这需要在 Apollo 中的解析器以及我的外部graphql
系统上的解析器上重复工作。
有没有办法让我通过 Apollo 服务器将客户端中的查询传递到外部graphql
数据源?
也许您可以从第四个解析器参数 ( resolveInfo
) 访问 GraphQL AST 并将其传递给 GraphQL 客户端?
这是一些原型代码:
import { print } from 'graphql/language/printer';
function forwardOperationResolver(root, args, context, resolveInfo) {
return fetch('https://remote.host/graphql', {
method: 'POST',
body: JSON.stringify({
query: print(resolveInfo.operation),
variables: resolverInfo.variableValues,
}),
})
.then(response => response.json())
.then(response => {
if (response.errors) {
// Handle errors
}
return response.data;
});
}
缺点:这破坏了一些通常在 GraphQL 中起作用的东西,比如部分结果和错误位置......