Graphql 如何从2个API查询数据

Graphql 如何从2个API查询数据,graphql,gatsby,contentful,Graphql,Gatsby,Contentful,我已经设置了一个Gatsby客户端,它使用Gatsby source Contentful插件连接到Contentful。我还连接了一个简单的自定义API,它是使用gatsby源代码graphql插件连接的 当我运行dev服务器时,我能够从操场上的Contentful查询我的页面 我还可以通过操场查询我的自定义API 因此,这两个API都能正常工作,并且与盖茨比有着良好的联系 我想通过编程生成一组具有动态部分(参考)的页面,作者可以根据自己的意愿添加和排序 我使用节点上的…连接以及在每个动态

我已经设置了一个Gatsby客户端,它使用
Gatsby source Contentful
插件连接到Contentful。我还连接了一个简单的自定义API,它是使用
gatsby源代码graphql
插件连接的

  • 当我运行dev服务器时,我能够从操场上的Contentful查询我的页面
  • 我还可以通过操场查询我的自定义API
  • 因此,这两个API都能正常工作,并且与盖茨比有着良好的联系
我想通过编程生成一组具有动态部分(参考)的页面,作者可以根据自己的意愿添加和排序

我使用节点上的
…连接以及在每个动态部分中定义的片段来实现这一点。到目前为止一切进展顺利

我的实际问题:

现在我有一个动态部分,它是一个工作列表。该组件需要从Contentful API中获取数据,因为它存储纬度和经度等值。因此,作者可以自由地在地图上设置点并设置半径。我使用组件中的一个片段成功地从Contentful中获取了此信息:

export const query=graphql`
ContentfulJobListMitaDresse上的片段JoblistModule{
…在满足的工作中{
知足的
半径
地理位置{
朗
拉特
}
}
}`
但是,如何将此信息传递给另一个从自定义API获取jobdata的查询?如果我对盖茨比的理解正确,我就必须以某种方式将这两个API连接在一起?或者我可以运行另一个查询,以获取作为变量传入的这些值吗?我将如何以及在哪里实现这一点

我在
gatsby node.js
(因为传入的上下文只能用作查询中的变量)和模板文件(因为我一次只能运行一个查询)中,以及组件本身(因为这只接受staticQuery)中都找不到任何方法


我不知道我的误解在哪里。因此,我非常感谢您提供任何提示、帮助或示例。

由于您的自定义API是graphQL API,因此您可以使用
graphQL工具
包来完成此任务

您需要使用Gatsby的API创建一个解析器。在此解析器中,您的解析函数将调用
delegateToSchema

我们有一个类似的问题,我们的博客文章有一个包含ID的“author”字段。然后我们对另一个系统进行graphQL查询,以根据该ID查找作者信息

return {
        remoteAuthor: {
          type: person,
          args: {},
          resolve: async (source: ContentfulBlogPost, fieldArgs, context, info) => {
            if (!source.author) {
              return null
            }

            // runs the selection on the remote schema
            // https://github.com/gatsbyjs/gatsby/issues/14517
            return delegateToSchema({
              schema: authorsSchema,
              operation: 'query',
              fieldName: 'Person',
              args: { id: source.author },
              context,
              info,
            })
          },
        },
      }

这会在我们的博客文章类型中添加一个“remoteAuthor”字段,每当它被查询时,这些选择都会被代理到存在
person
类型的远程模式。

对于动态查询-求职者输入geo-(您可以使用post/json查询graphql)。。。下面的链接使用阿波罗(动力学)内盖茨比你为这个信息戈登!我会给它一个机会,只要我回到它和回答,如果这解决了我的问题。。。