GraphQL数组参数Mutation实现遇阻,求正确写法指导
正确编写接收数组参数的GraphQL Mutation
你的现有Mutation存在两个关键问题导致无法运行:
- 定义的变量
$orgs是数组类型,但传递input时仅传入了单个OrganizationInput对象,既没有使用数组格式,也没有引用该变量 - 对象内的
orgId: id、orgName: name属于未定义的标识符,GraphQL会将其视为字段名而非合法的参数值
以下是两种正确的实现方式:
方式一:使用变量传递数组参数
这种方式适合动态传入批量数据的场景,Mutation定义与变量引用对应:
mutation importOrganizations($orgs: [OrganizationInput]) { importOrganizations(input: $orgs) }
调用时需提供匹配格式的变量(例如在GraphiQL的Variables面板中):
{ "orgs": [ {"orgId": "ORG001", "orgName": "技术有限公司A"}, {"orgId": "ORG002", "orgName": "商贸有限公司B"} ] }
如果业务要求数组和元素都不能为空,可以在Schema和Mutation中补充!约束:
Schema修改:
type Mutations { importOrganizations(input: [OrganizationInput!]!): String }
对应的Mutation:
mutation importOrganizations($orgs: [OrganizationInput!]!) { importOrganizations(input: $orgs) }
方式二:直接硬编码数组参数
如果是固定的批量数据,可以直接在Mutation中写入数组:
mutation importOrganizations { importOrganizations(input: [ {"orgId": "ORG001", "orgName": "技术有限公司A"}, {"orgId": "ORG002", "orgName": "商贸有限公司B"} ]) }
内容的提问来源于stack exchange,提问作者misnomer42
相关产品推荐
相关产品推荐

