【问题标题】:How to combine a mutation and a query in a single query?如何在单个查询中组合突变和查询?
【发布时间】:2018-03-24 22:14:51
【问题描述】:

我有一个操作getFoo,要求用户通过身份验证才能访问资源。

用户使用突变authenticate 进行身份验证,例如

mutation {
  authenticate (email: "foo", password: "bar") {
    id
  }
}

当用户通过身份验证时,会发生两件事:

  1. 请求上下文丰富了身份验证详细信息
  2. 创建了一个 cookie

但是,我想将身份验证和 getFoo 方法调用组合到一个请求中,例如

mutation {
  authenticate (email: "foo", password: "bar") {
    id
  }
}
query  {
  getFoo {
    id
  }
}

后者会产生语法错误。

有没有办法将突变与查询结合起来?

【问题讨论】:

    标签: node.js graphql apollo-server


    【解决方案1】:

    根据 GraphQL 规范,无法在一个请求中发送突变和查询。

    但是,您可以将任何字段添加到突变负载。因此,如果您只需要少数几个查询来支持 authenticate 突变,您可以这样做,例如:

    mutation {
      authenticate (email: "foo", password: "bar") {
        id
        getFoo {
          id
        }
      }
    }
    

    归根结底,将突变和查询分开可能会更好。如果你想在像这样的许多突变中包含许多查询,它很快就会变得毛茸茸。我认为这里的额外请求的开销没有问题。

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      相关资源
      最近更新 更多