【发布时间】: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 吗?
-
不是直接的。因为我们谈论的是两个电话,所以它们是独立的。客户端必须提供参数,即使它是先前突变的输出。如果保持相同的模式,这是客户的责任。如果您添加另一个“二合一”突变,则服务器可以知道在内部转发数据。
标签: javascript vue.js graphql vue-apollo graphql-mutation