为了账号安全,请及时绑定邮箱和手机立即绑定

Apollo GraphQL 变量参数名称

Apollo GraphQL 变量参数名称

湖上湖 2022-06-05 16:06:38
背景:我在前端构建了一个带有单元格编辑的数据网格。每次编辑单元格中的字段时,它都会立即在服务器上更新。所以我认为在我的突变中只提交那个单一的字段是一个好习惯。这将减少网络流量大小,并且后端将更快地处理更新(这当然是非常高水平的所有优化)。这意味着我使用 GraphQL 突变发送的参数是可变的。您可以通过 GraphQL 变量很好地注入参数值,但是什么是键的好方法?为了可视化问题,这是我希望的:mutation($id: 1, $field: "first_name", $value: "John") {    updateClient(        id: $id,        $field: $value    ) {        id    }}
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

不,不幸的是,参数名称在查询中不能是可变的。惯例是使用输入对象类型进行突变来规避这个问题:


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 中有某种参数传播语法来使这种嵌套变得不必要。


查看完整回答
反对 回复 2022-06-05
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信