【问题标题】:Take result from one query / mutation and pipe to another从一个查询/突变中获取结果并管道到另一个
【发布时间】:2016-12-18 16:09:13
【问题描述】:

我想知道 GraphiQL 中是否有一种方法可以让我将一个查询/突变的结果通过管道传输到另一个查询/突变。这是一个示例,其中login 突变用于获取viewerviewer 将用于查询该用户的addresses。 GraphQL / GraphiQL 有可能吗?

mutation {
  login(credentials: {
    email: "me@me.com",
    password: "password123",
    passwordConfirmation: "password123"
  }) {
    viewer
  }
}

query {
  addresses(viewer:viewer) {
    city
  }
}

【问题讨论】:

标签: graphql


【解决方案1】:

突变中选择集的目的是能够获取由于突变而发生变化的数据。但它也使得获取相关数据成为可能,只要可以通过变异结果类型访问即可。

假设我们有以下类型:

type Address {
  city: String
}
type User {
  addresses: [Address]
}

如果login突变的结果(payload)类型包含User类型的字段viewer,该字段指向成功登录的用户,则可以查询User结果中的任意字段突变:

mutation {
  login(credentials: {
    email: "me@me.com",
    password: "password123",
    passwordConfirmation: "password123"
  }) {
    viewer {
      addresses {
        city
      }
    }
  }
}

【讨论】:

  • 在上面的例子中,查看器是一个 ID 或令牌,允许您访问 API 的其他部分。你说的有道理,但对我没有帮助。我仍然需要提出一个请求来获取查看器(令牌),然后将其复制并粘贴为其他突变的参数,这真是太糟糕了。
  • 我认为对于查询,您需要一个代表登录用户的“用户”类型,并在该类型中添加与用户相关的字段。然后可以在变异结果类型中添加对User的引用,这样就可以查询了。正如您所说,对于突变,您确实不能批处理依赖于 GraphQL 中先前突变的结果的突变,但是应该可以在您的 HTTP 中构建一个在查询语言之外执行此操作的批处理端点服务器。
  • 我想它来了,只是还没准备好。 github.com/graphql/graphql-js/issues/462
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2015-09-12
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2019-05-29
相关资源
最近更新 更多