Получение ошибки при мутации GraphQL с использованием AWS Amplify в собственном приложении React

Попытка выполнить мутацию graphql, где мутация должна принимать пользовательский тип. В схеме App Sync я определил эти настраиваемые типы:

Схема:

  input CreateConversationInput {
        user: UserInput
        doctor: DoctorInput
        questionsAndAnsers: [ConversationQAInput]
        pet: UpdatePetInput
    }

Реагировать на собственный код:

  const createConversationInput = {

        user: {
            username: "deep",
            userType: "Patient",
            fullName: "Deep A"
        },
        doctor: {
            name: "Raman",
            speciality: "dog",
            doctorId: "0bd9855e-a3f2-4616-8132-aed490973bf7"
        },
        questionsAndAnswers: [{ question: "Question 1", answer: "Answer 1" }, { question: "Question 2", answer: "Answer 2" }],
        pet: { username: "deep39303903", petId: "238280340932", category: "Canine" }


    }

    API.graphql(graphqlOperation(CreateConversation, createConversationInput)).then(response => {

        console.info(response);

    }).catch(err => {
        console.info(err);
    });

Я определил мутацию следующим образом:

export const CreateConversation = `mutation CreateConversation( $user: Object, 
    $doctor: Object, $questionsAndAnswers: Object, $pet: Object ) {

        createConversation(

             input : {

                user: $user
                doctor: $doctor
                questionsAndAnswers: $questionsAndAnswers
                pet: $pet
            }
        ){
    username
    createdAt

  }

  }`;

Мутация работает правильно в консоли AWS GraphQL. Однако в собственном приложении реакции я получаю ошибку.

Ошибка:

"Validation error of type UnknownType: Unknown type Object".

Я считаю, что ошибка связана с тем, что я определил тип как «Объект в мутации» вместо фактического типа, определенного в схеме AWS. Как я могу определить пользовательские типы в коде React Native, если это проблема?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 428
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам просто нужно изменить способ определения переменных:

mutation CreateConversation(
  $user: UserInput,
  $doctor: DoctorInput,
  $questionsAndAnswers: [ConversationQAInput],
  $pet: UpdatePetInput
) {
  createConversation(input: {
    user: $user
    doctor: $doctor
    questionsAndAnswers: $questionsAndAnswers
    pet: $pet
  }) {
    username
    createdAt
  }
}

При использовании переменных в GraphQL вы указываете тип ввода (или скаляр) для этой переменной. Затем он сравнивается с типом, ожидаемым любым аргументом, для которого вы используете переменную. Тип ввода здесь относится к одному из типов в вашей схеме, а не к чему-либо, связанному с JS, поэтому вам не нужно ничего особенного в вашем коде.

Спасибо. После изменения типа объекта на тот, который определен в схеме, он работает правильно.

Deep Arora 18.10.2018 07:37

Другие вопросы по теме