![](/img/trans.png)
[英]GraphQL mutation with empty array with React and AWS Amplify
[英]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.