You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建GraphQL Mutation实现可选字段按需更新?

如何调整GraphQL Schema实现部件的全量/增量更新?

原Schema中PartRequest的所有字段都被标记为必填(!),这导致客户端必须传入所有字段才能执行更新,无法实现仅修改指定字段的需求。要支持全量和增量两种更新方式,只需对Schema做以下调整:

调整后的完整Schema

type Mutation {
    updateParts(
      partId: String!
      parts: PartRequest!
    ): UpdatePartsResponse!
}

input PartRequest {
    name: String
    image: String
    boltTypes: [Bolts]
}

input Bolts {
    code: String!
    metadata: String!
}

调整说明

  • 移除PartRequest中所有字段的必填约束(去掉!):这样客户端可以自由选择传入需要更新的字段,未传入的字段服务端会保留原有数据,实现增量更新;如果传入所有字段,就是全量更新。
  • 修正笔误:原Schema中的Strings是错误类型,改为String。
  • 保留Bolts的字段必填约束:如果客户端需要更新boltTypes数组,数组内的每个Bolts对象必须包含完整的code和metadata,避免传入不完整的子对象导致逻辑错误。

验证示例

调整后,你提供的三个示例请求都能正常执行:

  1. 全量更新(传入所有字段)
  2. 仅更新name(只传name字段)
  3. 仅更新boltTypes(只传boltTypes数组)

服务端处理提示

服务端在处理updateParts请求时,需要判断parts参数中哪些字段存在有效值,仅对这些字段执行数据库更新操作,未传入的字段保持原有记录的值即可。

内容的提问来源于stack exchange,提问作者Kalanamith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:40:43