AWS Amplify调用ModelQuery.list返回FieldUndefined验证错误如何解决?
报错原因
该报错核心是你后端部署的AppSync GraphQL API中,Query类型下没有生成listNoteDatas字段,和本地代码调用的字段不匹配。get方法能正常执行说明单条查询的字段已生成,仅列表查询字段缺失。
解决步骤
- 检查后端GraphQL Schema配置
打开Amplify项目下的amplify/backend/api/<你的API名称>/schema.graphql文件,确认NoteData模型的定义是否正确添加了@model注解,且未手动关闭list查询:
# 正确配置示例,@model注解默认会自动生成get、list、create、update、delete全套查询/操作字段 type NoteData @model { id: ID! name: String! # 其他你自定义的字段 }
如果你之前为了限制定义了queries参数,比如写成@model(queries: { get: "getNoteData" }),就会仅生成单条查询字段,不会生成列表查询字段。可以直接删除自定义的queries配置,或者手动补充list字段定义:@model(queries: { get: "getNoteData", list: "listNoteDatas" })
- 推送后端配置更新
修改完schema后,在项目根目录执行命令amplify push,等待后端部署完成,确保新的schema已经生效到云端AppSync服务。 - 同步本地模型配置
后端部署完成后,执行amplify pull把最新配置同步到本地Android项目,同步完成后重新构建整个项目,确保本地生成的NoteData模型类和后端配置完全一致。 - 验证查询接口
重新运行App测试列表查询,此时ModelQuery.list(NoteData::class.java)即可正常返回数据。
内容的提问来源于stack exchange,提问作者devkim2009
相关产品推荐
相关产品推荐

