通过 AWS AppSync 中的突变更新 GraphQL 数据时出错

Posted

技术标签:

【中文标题】通过 AWS AppSync 中的突变更新 GraphQL 数据时出错【英文标题】:Error updating GraphQL data through mutation in AWS AppSync 【发布时间】:2019-08-21 17:11:55 【问题描述】:

我已经使用突变成功创建了数据,但是当我更新该数据时出现此错误

变量 'input' 已强制 NonNull 类型 'Int! 的 Null 值!

这是我的查询架构

type SmoothstarRegisteration @model @versioned 
  id: ID!

  active: Boolean!

  type: String!
  registerationSubmitDate: String
  registerationApprovedDate: String
  userId: String!
  videoInfoReviewed: Boolean!

  registerationAttempts: Int!
  registerationStatus: String

  orderNum: String
  orderInfo: OrderInfo @connection(name: "SmoothstarRegisterationOrder")

  address: String
  postCode: String
  region: String
  dateOfBirth: String
  smoothstarModel: String
  purchaseDate: String
  shopName: String
  ocrInfo: OCRInfo @connection(name: "SmoothstarRegisterationOCR")

  privacyPolicyReviewed: Boolean!
  extendedPolicyReviewed: Boolean!
  termsOfUseReviewed: Boolean!

  files: [RegisterationMedia!] @connection(name: "SmoothstarRegisterationMedia")

这里是更新查询

mutation UpdateSmoothstarRegisteration(
  $input: UpdateSmoothstarRegisterationInput!
) 
  updateSmoothstarRegisteration(input: $input) 
    id
    active
    type
    registerationSubmitDate
    registerationApprovedDate
    userId
    videoInfoReviewed
    registerationAttempts
    registerationStatus
    orderNum
    orderInfo 
      id
      active
      type
      orderNum
    
    address
    postCode
    region
    dateOfBirth
    smoothstarModel
    purchaseDate
    shopName
    ocrInfo 
      id
      active
      type
      customerId
      customerEmail
      customerPhone
      orderNum
      address
    
    privacyPolicyReviewed
    extendedPolicyReviewed
    termsOfUseReviewed
    files 
      items 
        id
        version
      
      nextToken
    
    version
  

这是调用API的代码。

return API.graphql(graphqlOperation(operation, data))
    .then(response => 
      console.log(`API ($name) Response => `, response);
      return response;
    )
    .catch(error => 
      throw error;
    );

Operation 中,我正在发送更新查询,就像在我放置的数据中一样

 input: 
    active: true
    extendedPolicyReviewed: true
    id: "9dfc480f-7bed-42ed-a585-820f5e8c1485"
    orderNum: "ABCD1234xyz"
    privacyPolicyReviewed: true
    registerationAttempts: 2
    registerationStatus: "registered"
    registerationSubmitDate: "2019-03-31"
    smoothstarRegisterationOrderInfoId: "03b6967d-4b86-4c2d-9115-fb7a40a9c474"
    termsOfUseReviewed: true
    type: "W"
    userId: "m.daniyal.awan@gmail.com"
    videoInfoReviewed: true 

【问题讨论】:

变异定义是否也返回所有正在使用的字段? 【参考方案1】:

我已经解决了这个问题,expectedVersion 属性在输入中丢失。 刚刚添加了expectedVersion: 1,一切顺利。该数字必须与当前数据中存在的版本条目完全相同,每次调用更新时都必须增加它。

【讨论】:

以上是关于通过 AWS AppSync 中的突变更新 GraphQL 数据时出错的主要内容,如果未能解决你的问题,请参考以下文章

当设备连接到网络时,AWS AppSync 离线突变会多次更新到服务器

AWS Appsync 从 Lambda 调用变异?

当 AWS AppSync 使用 Cognito 时如何验证 Lambda 生成的突变

aws amplify appsync 中的 Graphql 突变错误

AWS AppSync 订阅:基于更新文档中的对象的复杂授权

使用 AWS Amplify/AppSync 的嵌套 GraphQL 突变