繁体   English   中英

AWS Amplify GraphQL 突变未更新布尔字段

[英]AWS Amplify GraphQL mutation is not updating a boolean field

我正在使用 AWS Amplify GraphQL 控制台,我注意到更新布尔字段不起作用,我不确定具体原因。 这也不适用于我的 React Native 应用程序。 基本上,我想做的是在 onPress 上,将 isOnline 更改为 true 或 false(请参阅下面的完整代码):

isOnline: !car.isOnline

架构.graphql

type Car @model 
@key(name: "byUser", fields: ["userId"]) 
{
  id: ID!
  type: String!
  latitude: Float
  longitude: Float
  heading: Float

  plate: String

  isOnline: Boolean
  isActive: Boolean

  orders: [Order] @connection(keyName: "byCar", fields: ["id"])

  userId: ID!
  user: User @connection(fields: ["userId"])
}

突变.js

export const updateCar = /* GraphQL */ `
  mutation UpdateCar(
    $input: UpdateCarInput!
    $condition: ModelCarConditionInput
  ) {
    updateCar(input: $input, condition: $condition) {
      id
      type
      latitude
      longitude
      heading
      plate
      isOnline
      isActive
      userId
      _version
      _deleted
      _lastChangedAt
      createdAt
      updatedAt
    }
  }
`;

index.js

try {
  const userData = await Auth.currentAuthenticatedUser();
            
  const input = {
    id: userData.attributes.sub,
    isOnline: !car.isOnline,
  }

  const updatedCarData = await API.graphql(
     graphqlOperation(
        updateCar, { 
          input 
        })
  )

  console.log("Updated car: ", updatedCarData.data.updateCar)
            
  setCar(updatedCarData.data.updateCar);
 } catch (e) {
   console.error(e);
 }

从应用程序中,每次我将 isOnline 字段设置为 true,即使我尝试将其设置为 false 而不是 !car.isOnline。 我还尝试创建一个名为 isActive 的新字段,该字段最初为空,我在 AWS AppSync GraphQL 控制台上创建了一个突变并能够将其设置为 false,但是当尝试将其设置为 true 时,更新不起作用,它总是返回假。

请注意,正在更新其他字段,例如字符串字段。

你能指导我解决这个问题吗?

我能够通过以下方式解决此问题:

运行以下命令:

amplify update api

选择GraphQL ,然后禁用冲突检测

最后但同样重要的是,运行:

amplify push

我在 Amplify Docs 上没有找到任何解释,但如果您遇到此问题,请确保按照上述步骤操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM