首页 > 解决方案 > 订阅错误:从数据存储同步模型时出现 GraphQLResponse.Error

问题描述

我的schema.graphql文件中定义了几个模型。其中之一是:

type QuizCategory @model {
  id: ID!
  QuizCategoryName: String!
  QuizCategoryDescription: String!
  QuizCategoryThumbnailUrl: String!
  QuizCategoryReferenceCode: Int!
}

当我运行amplify push时,schema.grahql构建文件夹中的更新为:

 type QuizCategory {
   id: ID!
   QuizCategoryName: String!
   QuizCategoryDescription: String!
   QuizCategoryThumbnailUrl: String!
   QuizCategoryReferenceCode: Int!
   _version: Int!
   _deleted: Boolean
   _lastChangedAt: AWSTimestamp!
   createdAt: AWSDateTime!
   updatedAt: AWSDateTime!
 }

并且在 appsync 控制台的模式选项卡中制作了该文件的精确副本,以及其他自动生成的内容。

现在,在此数据源指向的数据库中,我添加了列和值,但是当我运行应用程序时,我收到以下错误消息:

E/amplify:aws-datastore(8287):GraphQLResponseException{message=QuizCategory 的订阅错误:[GraphQLResponse.Error{message='FieldUndefined 类型的验证错误:'QuizCategory' 类型中的字段'_deleted' 未定义@'onUpdateQuizCategory/_deleted '',locations='null',path='null',extensions='null'},GraphQLResponse.Error{message='FieldUndefined 类型的验证错误:'QuizCategory' 类型中的字段 '_lastChangedAt' 未定义 @'onUpdateQuizCategory/ _lastChangedAt'',locations='null',path='null',extensions='null'},GraphQLResponse.Error{message='FieldUndefined 类型的验证错误:'QuizCategory' 类型中的字段 '_version' 未定义 @'onUpdateQuizCategory /_版本'',位置='null', path='null', extensions='null'}], errors=[GraphQLResponse.Error{message='FieldUndefined 类型的验证错误:'QuizCategory' 类型中的字段'_deleted' 未定义@'onUpdateQuizCategory/_deleted' ',locations='null',path='null',extensions='null'},GraphQLResponse.Error{message='FieldUndefined 类型的验证错误:'QuizCategory' 类型中的字段 '_lastChangedAt' 未定义 @'onUpdateQuizCategory/_lastChangedAt '',locations='null',path='null',extensions='null'},GraphQLResponse.Error{message='FieldUndefined 类型的验证错误:'QuizCategory' 类型中的字段 '_version' 未定义 @'onUpdateQuizCategory/ _version'',位置='null',路径='null',extensions='null'}], recoverySuggestion=查看附加的 GraphQLResponse.Error 对象列表。}

我尝试将字段添加(_version, _deleted, _lastChangedAt, createdAt, updatedAt)到表中,但这无济于事。

AppSync 指南中,有这一行:

要在客户端应用程序中使用此元数据,请在您的 GraphQL 类型和突变选择集中包含 _version、_lastChangedAt 和 _deleted 字段。

这不是很清楚,而且 Flutter 的文档仍在开发中,很难找到原因。

我还浏览了以下“相关”github问题页面:

DataStore 应自动填充 createdAt 和 updatedAt #6758 AWS Amplify GraphQL 订阅失败,并显示“不能为不可为空的类型返回 null:父级中的 'AWSDateTime' ... 对于 createdAt/updatedAt”#5542

最重要的是:

阻止 AppSync 全局/在线同步本地数据存储更改的几个错误 #822

当我在 appsync 控制台上测试查询时,一切正常。

如果有人需要任何澄清,我会更新这个问题。

标签: amazon-web-servicesamazon-s3aws-amplifyaws-appsyncamplify-flutter

解决方案


推荐阅读