【问题标题】:React-Apollo : Make query calls for a list of variablesReact-Apollo:对变量列表进行查询调用
【发布时间】:2019-03-09 00:00:53
【问题描述】:

给定用户名列表和对GITHUB API的以下查询:-

query.gql:
query USER_QUERY($username:String!){
            user(login: $username){
                  name
                repositories(isFork:false){
                totalCount
              }
            }
          }

我想为每个username 创建一个composite query

例子:

假设这是用户名列表

array usernames=["Sheldon","Leonard","Raj","Holowitz"]

预期查询:

 {
  sheldon:user(login: "sheldon") {
    name
    repositories(isFork: false) {
      totalCount
    }
  }
  leonard:user(login: "leonard") {
    name
    repositories(isFork: false) {
      totalCount
    }
  }
  raj:user(login: "raj") {
    name
    repositories(isFork: false) {
      totalCount
    }
  }
  holowitz:user(login: "holowitz") {
    name
    repositories(isFork: false) {
      totalCount
    }
  }

有没有reactive-方法可以达到效果?

【问题讨论】:

    标签: javascript reactjs graphql react-apollo github-graphql


    【解决方案1】:

    没有reactive 方法可以解决这个问题——react 不适用于胶水字符串模板。

    您预期的查询不是以正确的 graphQL 方式构建的。它可能有效,但你不应该那样想——当你需要数组时——只需要一个数组。如果您真的需要这种结构,请在获取“正常”数组后执行(转换) - 这是单行 .filter() fn 的问题。不要指望这种(奇怪的)格式(行为)来自普遍的反应。

    阅读thisthis 的相关答案。

    即使调用单独的查询也可能被 apollo 批处理。

    【讨论】:

    • 查询是正确的 wrt graphQL 方式。不同的查询格式请参考here。这是为了使查询能够通过 .graphql||.gql 文件与脚本分开。
    • 不,预期的查询是用右图 QL 方式编写的 它是为每个用户名的响应别名
    • “它可能有效,但你不应该那样想” - 我没有写它是不正确的 - YAGNI - 不要把简单的事情复杂化
    • 好的,附议。如果 API 根本没有为此 api 提供数组,我该如何请求数组,它只需要单个用户名和“单个用户名”的“询问”数据的响应
    • 您之前应该在标题/问题中写下。不是你的 API?你读过batching吗?只需渲染项目列表,每个项目都有自己的查询 - 如果服务器支持批处理,它应该无需额外的工作 - 如果不问一个新的、更详细的问题。
    猜你喜欢
    • 2017-09-08
    • 2018-09-25
    • 2019-01-26
    • 2018-01-27
    • 2018-03-02
    • 2017-08-15
    • 2019-08-28
    • 2018-07-23
    • 2020-11-04
    相关资源
    最近更新 更多