Я моделирую объект User с graphql для собственного приложения реакции с использованием ampify и appsyn c. Мне нужно обновить поле имени после создания пользователя, но я получаю DynamoDB: ConditionalCheckFailedException. Создание пользователей и запрос к таблице User работает нормально, я просто не могу обновить поля существующего объекта.
Я определяю тип User в каталоге моего проекта (ampify / backend / api / schema.graphql) и позволяю CLI-амплификатору генерировать операторы GraphQL (запросы, мутации и подписку) на основе моих типов схем.
Используемая схема:
type User @model @auth(rules: [{allow: owner}]) {
username: String!
name: String
}
type Mutation {
createUser(input: CreateUserInput!, condition: ModelUserConditionInput): User
updateUser(input: UpdateUserInput!, condition: ModelUserConditionInput): User
deleteUser(input: DeleteUserInput!, condition: ModelUserConditionInput): User
}
input UpdateUserInput {
username: String
name: String
}
Я запускаю мутацию, чтобы создать пользователя с учетными данными вошедшего в систему пользователя. Из консоли AppSyn c я вхожу в систему как пользователь Cognito с тем же именем пользователя (745ab477-5702-4f8d-b938-a987a3d9d192) и запускаю эту мутацию:
mutation updateUser{
updateUser(input: {
name: "James"
}
condition:{
username: {eq: "745ab477-5702-4f8d-b938-a987a3d9d192"}
}){
username
name
}
}
, которая производит:
{
"data": {
"updateUser": null
},
"errors": [
{
"path": [
"updateUser"
],
"data": null,
"errorType": "DynamoDB:ConditionalCheckFailedException",
"errorInfo": null,
"locations": [
{
"line": 40,
"column": 5,
"sourceName": null
}
],
"message": "The conditional request failed (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ConditionalCheckFailedException; Request ID: HND4VSCK8HLM5NC08VDEV51CORVV4KQNSO5AEMVJF66Q9ASUAAJG)"
}
]
}
Это таблица пользователей DynamoDB после добавления текущего пользователя:
![table](https://i.stack.imgur.com/3vwUN.png)