Max*_*rev 1 apollo graphql graphql-js react-apollo apollo-client
我有一个突变:
const createSomethingMutation = gql`
mutation($data: SomethingCreateInput!) {
createSomething(data: $data) {
something {
id
name
}
}
}
`;
Run Code Online (Sandbox Code Playgroud)
如何Something在一个请求中创建多个?我需要像这样在我的GraphQL服务器上创建一个新的Mutation吗:
mutation {
addManySomethings(data: [SomethingCreateInput]): [Something]
}
Run Code Online (Sandbox Code Playgroud)
还是有一种方法可以createSomethingMutation在一个请求中多次使用来自Apollo Client的现有方法和不同的参数?
实际上,您可以使用别名来做到这一点,并为每个别名分别设置变量:
const createSomethingMutation = gql`
mutation($dataA: SomethingCreateInput!) {
createA: createSomething(data: $dataA) {
something {
id
name
}
}
createB: createSomething(data: $dataB) {
something {
id
name
}
}
}
`;
Run Code Online (Sandbox Code Playgroud)
然后,您只需要提供一个具有两个属性的变量对象- dataA和dataB。但是,如果您需要动态变化的数量,事情就会变得很混乱。通常,在这种情况下,仅暴露单个突变来处理创建/更新一个或多个模型实例可能会更容易(更有效)。
如果您要减少从客户端到服务器的网络请求数量,也可以考虑使用查询批处理。
Max*_*rev -1
这不可能那么容易。
因为变异有一个一致的名称,而 graphql 不允许在一个查询中多次执行相同的操作。因此,要实现这一点,阿波罗必须将突变映射到别名,然后甚至将数据映射variables到某种未知的可迭代形式,我非常怀疑它确实如此。
| 归档时间: |
|
| 查看次数: |
1645 次 |
| 最近记录: |