Вызов мутации AWS Amplify возвращает «Ошибка проверки типа UnknownArgument: неизвестный аргумент поля» - PullRequest
0 голосов
/ 11 декабря 2018

Когда этот запрос был запущен для консоли Amplify, это работает хорошо - поэтому я предполагаю правильную настройку схемы и базы данных:

mutation CreateUser {
  createUser(input: {
    name: "Nader Dabit"
    email: "naderdabit@site.com"
    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"});

Поэтому у меня есть следующие коды для вызова метода mutation :

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.log('newUserIncoming: ', newUser);
}
catch (err) 
{
   console.log('error while create user: ', err);
}

Но приведенный выше вызов всегда превращается в error / catch, со следующими объектами ошибки (как видно из React Native Debugger):

enter image description here

1 Ответ

0 голосов
/ 11 декабря 2018

Понятно, что приведенный выше контекст GraphQL немного стар.Просматривая текущую документацию, размещенную по адресу https://aws -amplify.github.io / docs / js / реаги , я обнаружил, что она требует некоторой корректировки.После этого я смог вернуть положительный результат и сохранить значение в БД.

Ниже приведен мой последний формат запроса (если это помогает кому-либо, как я, обратите внимание, что использование запятой теперь удалено, а также добавлено с новым тегом input ):

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
        }
}`;

Остальные остаются такими же для меня.

...