При запуске этого запроса в консоль Amplify это работает хорошо, поэтому я предполагаю, что схема и база данных настроены правильно:
mutation CreateUser {
createUser(input: {
name: "Nader Dabit"
email: "[email protected]"
image: "someimagepath"
mobile: 122122
}) {
id
name
email
image
mobile
}
}
В моем приложении RN я настроил AWS Amplify следующим образом (но я не уверен, что это так, но процесс входа / регистрации и т. д., Похоже, работает нормально):
Amplify.configure({Auth: apiKeyStore, aws_appsync_graphqlEndpoint: "https://xxx.appsync-api.ap-xxx-1.amazonaws.com/graphql",
aws_appsync_region: "ap-xxx-1", aws_appsync_authenticationType: "API_KEY", aws_appsync_apiKey: "da2-xxxx"});
Поэтому у меня есть следующие коды для вызова метода мутация:
const CreateUser = `mutation CreateUser(
$name: String!,
$email: String!,
$mobile: Int!,
$image: String!
) {
createUser(name:$name, email:$email, mobile:$mobile, image:$image)
{
id
name
email
mobile
image
}
}`;
// inside a method
try
{
const newUser = await API.graphql(graphqlOperation(CreateUser, {name: name, email: email, mobile: mobile, image: image}));
console.info('newUserIncoming: ', newUser);
}
catch (err)
{
console.info('error while create user: ', err);
}
Но приведенный выше вызов всегда превращается в error / catch со следующими объектами ошибок (как видно с React Native Debugger):





Я вижу, вероятно, приведенный выше контекст GraphQL немного устарел. Заглянув в текущую документацию, размещенную на https://aws-amplify.github.io/docs/js/react, я обнаружил, что она требует некоторой корректировки. После этого я смог вернуть положительный результат и сохранить значение в БД.
Ниже приведен мой последний формат запроса (если он помогает кому-то вроде меня, обратите внимание, что использование запятой теперь удалено, а также добавлено с новым тегом Вход):
const CreateUser = `mutation CreateUser(
$name: String!
$email: String!
$mobile: Int!
$image: String!
) {
createUser(input:{name:$name email:$email mobile:$mobile image:$image})
{
id
name
email
mobile
image
}
}`;
Остальные остались для меня такими же.