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

GraphQL创建项目Mutation报错:ProjectInput未定义parts字段

报错原因与解决方法:Field 'parts' is not defined by type 'ProjectInput'

报错原因

这个错误逻辑非常明确:你在Mutation的createProject输入参数里传递了parts字段,但你的ProjectInput类型定义中根本没有声明这个字段。GraphQL是强类型查询语言,输入结构必须严格匹配定义的Input类型,因此直接抛出了校验错误。

另外你的查询变量里还有个隐性问题:phones字段定义的是[ID](数组类型),但你传的是单个值28,这也会触发类型不匹配的错误,后续需要一并修正。

解决方法

根据你的业务场景(Project关联Phone,Phone关联多个Parts),分两种处理方案:

方案1:业务需要Project直接关联Parts

如果你的需求是让Project同时关联Phone和独立的Parts,首先需要修改ProjectInput类型,添加parts字段:

type ProjectInput {
  title: String
  phones: [ID]
  parts: [ID]  # 新增parts字段,匹配传递的数组类型
}

同时修正查询变量的phones为数组类型,确保和定义一致:

{
  "title": "test",
  "phones": [28],  # 改为数组
  "parts": [2, 6]
}

最后要确保后端的createProjectResolver逻辑已经实现了parts字段的关联处理,否则会出现关联失败的情况。

方案2:Project仅关联Phone,Parts通过Phone间接关联

如果你的需求是Project只需要关联Phone,而Phone本身已经关联好Parts(查询时能通过Phone拿到Parts),那完全不需要在创建Project时传递parts字段,直接移除相关代码即可:

修改后的Mutation:

mutation createProject(
  $title: String
  $phones: [ID]
) {
  createProject(
    data: {
      title: $title
      phones: $phones
    }
  ) {
    data {
      id
      attributes {
        title
        phones {
          data {
            id
            attributes {
              name
              parts {
                data {
                  id
                }
              }
            }
          }
        }
      }
    }
  }
}

修正后的查询变量:

{
  "title": "test",
  "phones": [28]  # 改为数组匹配类型定义
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:32:43