AWS控制台使用None数据源触发带Input参数Mutation非空报错咨询
问题原因
- 核心结构不匹配:你当前Resolver返回的payload直接透传了
$context.args,结构为{"input": {"title": "你的入参值"}},但Mutation要求返回的MyModelType5类型需要id、title字段直接在返回对象根层级,且id为必填非空字段,你返回的结构既没有顶层的id字段,title也嵌套在input属性下,因此触发非空字段返回null的错误。 - 命名不匹配问题:
- Schema中定义的Mutation字段名为
createMyModelType5,但你的查询语句中调用的是createMyModelType,缺少后缀5 - Schema中定义的入参类型为
CreateMyModelType5Input,但你的查询语句中声明的变量类型为CreateMyModelTypeInput,缺少后缀5 - 查询语句中声明的变量名为
$createmymodeltypeinput,但你传入的变量key为createmymodeltype5input,命名不一致会导致入参无法正确传递。
- Schema中定义的Mutation字段名为
解决方案
1. 修正Resolver请求映射模板
调整模板结构,直接生成符合MyModelType5要求的返回数据,从input层级取出对应字段,同时生成必填的唯一ID:
{ "version": "2017-02-28", "payload": { "id": $util.toJson($util.generateId()), "title": $util.toJson($context.args.input.title) } }
如果后续Input字段有扩展,你可以直接在payload中新增对应字段,从$context.args.input下取值即可。
2. 修正GraphQL查询语句
对齐Schema定义和变量命名:
mutation createMyModelType($createmymodeltype5input: CreateMyModelType5Input!) { createMyModelType5(input: $createmymodeltype5input) { id title } }
3. 保持变量命名一致
你当前的变量结构无需修改,keycreatemymodeltype5input已经和修正后的查询变量名匹配,可以正常传入。
内容的提问来源于stack exchange,提问作者Muwnaguzi Joshua
相关产品推荐
相关产品推荐

