2017-10-12 43 views
0

我有一个操作getFoo,它要求用户通过身份验证才能访问资源。如何在单个查询中组合突变和查询?

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

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

当用户通过验证后,发生两件事情:

  1. 请求上下文富含
  2. 一个cookie创建

不过认证的细节,我想将认证和方法调用组合成一个请求,例如

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

后者产生语法错误。

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

回答

0

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

但是,您可以添加任何字段到突变有效载荷。因此,如果有只有极少数,你需要为authenticate突变支持查询,你可以到这一点,例如:

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

在这一天结束,它可能是更好地保持突变和尽管分开查询。如果你想在许多像这样的突变中包含许多查询,它会变得非常快速。我在这里看不到额外请求的开销问题。