AWS AppSync更新用户Profile突变报错:输入含未定义字段
排查AWS AppSync Update突变字段不匹配错误
1. 检查字段大小写一致性
GraphQL输入对象的字段名大小写敏感,务必确认:
- Schema中
AddMapTypeUserAccessPolicy的字段名(比如mapId),和你C#代码里传入的属性名(比如是否写成了MapId)完全一致,哪怕大小写差异都会被判定为不存在的字段。 - 把Schema定义和C#输入对象的属性逐一对比,确保拼写和大小写完全匹配。
2. 排查输入数据的额外字段
仔细核对传入突变的输入数据,是否包含AddMapTypeUserAccessPolicy未定义的字段:
- 比如Schema里只定义了
mapId和accessLevel,但输入数据里多了createdAt、updatedAt这类额外属性,哪怕值为null也会触发报错。 - 用JSON格式化工具展开输入数据,和Schema字段逐一比对,剔除多余属性。
3. 确认嵌套输入结构正确性
如果AddMapTypeUserAccessPolicy是updateUserProfile输入的嵌套字段,要保证层级结构正确:
- 比如突变的正确结构应该是:
对应的变量里,mutation UpdateUserProfile($input: UpdateUserProfileInput!) { updateUserProfile(input: $input) { id accessPolicies { mapId accessLevel } } }accessPolicies必须是AddMapTypeUserAccessPolicy类型的对象/数组,不能把嵌套字段直接放在外层输入中。
4. 验证客户端代码与Schema同步
如果你用了代码生成工具(比如AWS Amplify代码生成、GraphQL.NET客户端生成),要确认生成的C#类基于最新Schema:
- 若修改过Schema但未重新生成客户端代码,旧类可能包含多余字段或缺失正确映射,导致输入不匹配。
- 手动检查生成的
AddMapTypeUserAccessPolicy类的属性,确保和Schema定义完全一致。
5. 用AppSync控制台直接测试
在AWS AppSync控制台的查询编辑器里,手动构造符合Schema的突变请求测试:
- 示例请求:
如果控制台请求成功,说明问题出在客户端代码的输入构造上;如果控制台也报错,那就要排查Schema定义或Resolver逻辑。mutation { updateUserProfile(input: { id: "user123", accessPolicies: { mapId: "map456", accessLevel: "READ" } }) { id } }
内容的提问来源于stack exchange,提问作者a.tolba
相关产品推荐
相关产品推荐

