定义带数组类型的GraphQL Schema后Amplify Push触发内部错误求解决
解决Amplify GraphQL数组类型参数触发内部错误的问题
问题场景
在Amplify的schema.graphql中定义包含自定义对象数组参数的GraphQL字段(如data: [Anforderungeccdata])时,执行amplify push操作触发内部错误。
解决方案
调整自定义类型定义顺序
Amplify的Schema解析对类型定义顺序敏感,需确保自定义对象类型Anforderungeccdata定义在引用它的字段之前。调整后的Schema示例:type Anforderungeccdata { grouprequestId: String dateFrom: String dateTo: String ecShare: String energyDirection: String meteringPoint: String } type Mutation { anforderungecc( sender: String data: [Anforderungeccdata] test: Boolean ecid: String receiver: String ): String @function(name: "anforderungecc-${env}") @auth(rules: [{ allow: private }]) }清理Amplify缓存文件
执行以下命令清理生成的临时文件,避免旧缓存导致的解析冲突:amplify clean amplify push升级Amplify CLI版本
旧版本CLI可能存在数组类型解析的bug,升级到最新稳定版:npm install -g @aws-amplify/cli验证Lambda函数输入处理逻辑
由于字段使用了@function指令,对应的Lambda函数需正确处理数组类型输入。比如在Node.js函数中,确保能正确解析event.arguments.data数组,处理每个对象的字段。显式声明数组约束(可选)
如果业务允许,可显式指定数组或元素的非空约束,帮助Amplify生成正确的Resolver:- 非空数组:
data: [Anforderungeccdata!]! - 允许空数组但元素非空:
data: [Anforderungeccdata!]
- 非空数组:
内容的提问来源于stack exchange,提问作者Ilijanovic
相关产品推荐
相关产品推荐

