另一个突变的 GraphQL 结果
Posted
技术标签:
【中文标题】另一个突变的 GraphQL 结果【英文标题】:GraphQL result for another mutation 【发布时间】:2022-01-17 00:52:21 【问题描述】:是否可以同时使用 GraphQL 突变的结果作为另一个突变的参数?
我想一次性创建一个用户和他的地址。
首先我写入地址,然后获取地址 id 用于创建用户。 通过输入填充必要的数据效果很好
这是否可能在不触发来自客户端的新突变的情况下实现?
const createUser = gql`
mutation createUser(
$user: createUserInput!
$address: createAddressInput!
)
createAddress(input: $address)
address
id
createUser(input: $user )
user
id
username
`
【问题讨论】:
您需要添加第三个突变来同时执行这两个操作。一个接一个地调用两个突变意味着来自客户端的两个调用。 你对这两个调用是正确的,但是可以直接在 createUser 调用中获取地址 id 吗? 不是直接的。因为我们谈论的是两个电话,所以它们是独立的。客户端必须提供参数,即使它是先前突变的输出。如果保持相同的模式,这是客户的责任。如果您添加另一个“二合一”突变,则服务器可以知道在内部转发数据。 【参考方案1】:不,这是不可能的。您要么必须从客户端发出两个顺序请求,要么调整您的服务器实现。我推荐后者。
您应该更改架构,使CreateUserInput
类型不仅接受addressId: ID
,而且还可以接受newAddress: CreateAddressInput
对象,然后它将在创建新用户之前用于创建新地址。
【讨论】:
以上是关于另一个突变的 GraphQL 结果的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular Apollo Graphql 中访问突变结果