У меня есть следующая схема в AppSync для GraphQL
input CreateTeamInput {
name: String!
sport: Sports!
createdAt: String
}
enum Sports {
baseball
basketball
cross_country
}
type Mutation{
createTeam(input: CreateTeamInput!): Team
}
Однако, когда я пытаюсь выполнить запрос с помощью библиотеки AWS Amplify через
export const CreateTeam = `mutation CreateTeam($name: String!, $sport: String!){
createTeam(input:{name:$name, sport:$sport}) {
id,
name,
sport
}
}
`;
....
API.graphql(graphqlOperation(CreateTeam, this.state))
Я получаю следующую ошибку: Validation error of type VariableTypeMismatch: Variable type doesn't match.
Как я могу обновить свой код для работы с этим типом перечисления?
Сообщение @VasileiosLekakis обновлено мутацией





$ sport должен быть спортивным типом, а не строкой
Но как мне на самом деле указать тип спорта? Мне удалось создать его без проблем в моем файле schema.graphql, используемом на стороне сервера (во фрагменте кода выше перечисления Sports {...}), но как мне создать его из клиентского запроса?
Я не мог добавить комментарий к нескольким строкам, поэтому написал ответ выше. @DanRamos
Тип поля CreateTeamInput.sport - это перечисление, поэтому ваша переменная $sport должна быть перечислением.
Попробуйте изменить свой запрос на:
export const CreateTeam = `mutation CreateTeam($name: String!, $sport: Sports!){
createTeam(input:{name:$name, sport:$sport}) {
id,
name,
sport
}
};
Примечание: По соглашению лучше использовать прописные буквы для значений перечисления, чтобы их было легко отличить от строк.
enum SPORTS {
BASEBALL
BASKETBALL
CROSS_COUNTRY
}
Ну, с моей стороны это был тупик. Я исходил из предположения, что, поскольку тип схемы «Спорт» существует только на моем сервере graphql, клиентский запрос будет иметь представление о том, что делать с $sports: Sports!, но он работал нормально. Спасибо!
Можете ли вы дать определение мутации? Мы не знаем здесь, что ожидает мутация createTeam