Amplify同步模型时QuizCategory订阅出现GraphQL响应错误如何解决
问题根因
报错触发的核心原因是AppSync端的订阅操作返回值定义,或者本地DataStore生成的订阅请求选择集,未包含_version/_deleted/_lastChangedAt三个系统元字段,和DynamoDB表是否存在这些字段无关。
修复步骤
- 第一步:重新生成本地客户端模型代码
运行amplify codegen models命令,强制重新生成Flutter端的模型类和内置GraphQL请求模板,确保本地订阅请求的选择集已经包含三个元字段,操作完成后删除项目旧的build缓存,再重新编译应用。 - 第二步:校验AppSync端订阅定义
打开AppSync控制台的Schema标签页,搜索三个订阅类型定义:
确认三者的返回类型均为携带所有元字段的onCreateQuizCategory onUpdateQuizCategory onDeleteQuizCategoryQuizCategory,如果返回类型缺失元字段,你可以手动在自定义schema中补充订阅的返回字段配置,或者重新运行amplify push --force强制覆盖AppSync端的自动生成配置。 - 第三步:确认冲突检测配置正常
检查项目根目录amplify文件夹下的backend/api/[你的API名称]/parameters.json文件,确认ConflictDetection配置项的值为VERSION,开启版本冲突检测是DataStore正常同步元字段的前提。如果该配置异常,修改后重新执行amplify push即可。
补充验证
完成上述操作后,你可以直接在AppSync控制台的查询页测试订阅请求,手动构造包含三个元字段的订阅语句验证返回正常:
subscription TestSubscription { onUpdateQuizCategory { id QuizCategoryName _version _deleted _lastChangedAt } }
测试无报错即可确认服务端配置正常,重启应用即可消除客户端报错。
内容的提问来源于stack exchange,提问作者Ojonugwa Jude Ochalifu
相关产品推荐
相关产品推荐

