从一个查询/突变中获取结果并管道到另一个
Posted
技术标签:
【中文标题】从一个查询/突变中获取结果并管道到另一个【英文标题】:Take result from one query / mutation and pipe to another 【发布时间】:2016-12-18 16:09:13 【问题描述】:我想知道 GraphiQL 中是否有一种方法可以让我将一个查询/突变的结果通过管道传输到另一个查询/突变。这是一个示例,其中login
突变用于获取viewer
,viewer
将用于查询该用户的addresses
。 GraphQL / GraphiQL 有可能吗?
mutation
login(credentials:
email: "me@me.com",
password: "password123",
passwordConfirmation: "password123"
)
viewer
query
addresses(viewer:viewer)
city
【问题讨论】:
有一个实验性的 batchOperations 功能,但我认为它还没有登陆 graphql-js。我在这里打开了一个问题。 github.com/graphql/graphql-js/issues/462 【参考方案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以上是关于从一个查询/突变中获取结果并管道到另一个的主要内容,如果未能解决你的问题,请参考以下文章