簡體   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