gpt4 book ai didi

javascript - Apollo GraphQL 变量参数名称

转载 作者:行者123 更新时间:2023-11-30 23:58:43 32 4
gpt4 key购买 nike

背景:我已经在前端构建了一个带有单元格编辑功能的数据网格。每次您编辑单元格中的字段时,它都会立即在服务器上更新。所以我认为在我的突变中只提交单个字段是一个很好的做法。这将减少网络流量大小,并且后端将更快地处理更新(当然,这都是非常高水平的优化)。

这意味着我通过 GraphQL 突变发送的参数是可变的。您可以很好地通过 GraphQL 变量注入(inject)参数值,但是对于键来说什么是好方法呢?

为了形象化问题,这是我希望的:

mutation($id: 1, $field: "first_name", $value: "John") {
updateClient(
id: $id,
$field: $value
) {
id
}
}

最佳答案

不可以,遗憾的是参数名称在查询中不能是变量。约定是使用输入对象类型进行突变来规避此问题:

type Mutation {
updateClient(id: ID!, input: ClientInput!): Client
}
input ClientInput {
a: String
b: Number

}

(而不是 updateClient(id: ID!, a: String, b: Number, …))

使用此模式,您可以将 ClientInput 类型的对象作为参数传递给您的突变:

query(`mutation($id: ID!, $input: ClientInput!) {
updateClient(id: $id, input: $input) {
id
}
}`, {id: 1, input: {["first_name"]: "John"}})

我真的希望 GraphQL 中有某种参数扩展语法来使这种嵌套变得不必要。

关于javascript - Apollo GraphQL 变量参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886457/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com