【问题标题】:Multiple endpoints in same query同一查询中的多个端点
【发布时间】:2020-07-03 15:55:10
【问题描述】:

它完美地工作,只有一个端点。 使用 apollo-link-rest,我做了一个看起来像这样的客户端

const restLink = new RestLink({ uri: "https://example.com/" })

并使用new ApolloClient({...}) 导出客户端

现在回答问题

在同一台服务器https://example.com/ 上,有多个端点,每个端点都有相同的字段,但每个端点的数据不同

第一个有效的查询如下所示

export const GET_PRODUCTS = gql`
   query firstQuery {
    products @rest(type: "data" path: "first/feed") { // the path could be second/feed and it will work with different data
     id
     title
   }
 }
`

我希望将所有这些不同的路径放到一个相同的 json 提要中,因为它们都具有相同的字段,但具有不同的数据

【问题讨论】:

    标签: javascript graphql apollo


    【解决方案1】:

    使用别名

    您可以(应该可以)使用标准方法进行类似的查询 - 获取许多数据(结果),这些数据(结果)通常以相同的形状(节点名称)可用。这被描述为here

    { 
      "1": products(....
      "2": products(....
      ...
    }
    

    可以创建路径using variables

    可以通过迭代data 对象轻松组合结果。问题?仅针对固定数量(不多)的端点,因为不应通过字符串操作生成查询。

    多个 graphql 查询

    您可以在循环中创建查询 - 参数化 - 使用 Promise.all() 和 apollo-client client.query(。结果也需要合二为一。

    自定义抓取

    使用custom fetch,您可以创建一个采用路径数组的查询。在这种情况下,解析器应该在参数化的fetch 请求上使用Promise.all()。组合结果可以作为单个节点返回(根据需要)。

    坏处

    所有这些方法都需要发出多个请求。可以通过制作服务器端 REST 包装器(docsblog)来解决问题。

    【讨论】:

      猜你喜欢
      • 2020-11-10
      • 2017-09-11
      • 2013-11-30
      • 2021-03-05
      • 2020-01-21
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多