Попытка выполнить мутацию graphql, где мутация должна выполняться нестандартным типом. В схеме приложения 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.log(response);
}).catch(err => {
console.log(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. Однако в ответном нативном приложении я получаю ошибку.
Ошибка:
Msgstr "Ошибка проверки типа UnknownType: Неизвестный тип Object".
Я считаю, что ошибка связана с тем, что я определил тип как объект в мутациях вместо фактического типа, определенного в схеме AWS. Как я могу определить пользовательские типы в исходном коде React, если это проблема?
Вам просто нужно изменить способ определения переменных:
mutation CreateConversation(
$user: UserInput,
$doctor: DoctorInput,
$questionsAndAnswers: [ConversationQAInput],
$pet: UpdatePetInput
) {
createConversation(input: {
user: $user
doctor: $doctor
questionsAndAnswers: $questionsAndAnswers
pet: $pet
}) {
username
createdAt
}
}
При использовании переменных в GraphQL вы указываете тип ввода (или скаляр) для этой переменной. Затем это сравнивается с типом, ожидаемым любым аргументом, для которого вы используете переменную. Тип ввода здесь относится к одному из типов в вашей схеме, и ничто не связано с JS, поэтому вам не нужно ничего особенного в вашем коде.