0

我有一个用例,我使用apollo-server-express基于 React 的apollo-client. 我有一些查询的外部graphql-datasource。目前,我已配置apollo-datasource-graphql为用作我的apollo-server-express. 但是,这需要在 Apollo 中的解析器以及我的外部graphql系统上的解析器上重复工作。

有没有办法让我通过 Apollo 服务器将客户端中的查询传递到外部graphql数据源?

4

1 回答 1

1

也许您可以从第四个解析器参数 ( 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 中起作用的东西,比如部分结果和错误位置......

于 2020-06-08T14:00:03.757 回答