Не удалось устранить ошибку Playground: переменная \ "$ input \" требуемого типа \ "MemberInput! \" Не была предоставлена - PullRequest
0 голосов
/ 02 июля 2019

Я победил в этом вопросе примерно за неделю, и ничто в Интернете не решает его.Объект данных не возвращается, даже «ноль».Я конвертирую из рабочего приложения REST CRUD в GraphQL.Не так просто, как я ожидал.

Моя мутация в Playground:

mutation createMember($input: MemberInput!) {
    createMember (input: $input) {
          first_name
          last_name
          user_name
    }
}

Playground Query Переменные ниже: (Не в разделе заголовков.)

{
  "input": {
    "first_name": "John",
    "last_name": "Creston",
    "user_name": "jc"
    }
}

Theсхема: (Запросы работают нормально, и тип Member, сущность в TypeORM, работает с ними и полностью REST CRUD.)

input MemberInput {
    first_name: String!
    last_name: String!
    user_name: String!
}

type Mutation {
    createMember(input: MemberInput!): Member!
}

type Query {
    getMembers: [Member]
    getMember(member_id: Int!): Member!
    checkUserName(user_name: String): Member
    checkEmail(email: String): Member
}

Я не понимаю, как решатель может быть проблемой для этой ошибкисообщение, но я добавлю преобразователь Nestjs:

@Mutation('createMember')
  async createMember(@Args('input') input: MemberInput): Promise<Members> {
    console.log('input in resolver: ', input);
    return await this.membersService.addItem(input);
  }

Служба работает с REST и запросами, поэтому это должно быть проблемой.Console.log в распознавателе никогда не появляется в терминале.

С помощью кнопки «Копировать CURL»:

curl 'http://localhost:3000/graphql' -H 'Accept-Encoding: gzip,    
deflate, br' -H 'Content-Type: application/json' -H 'Accept: 
application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin: 
http://localhost:3000' --data-binary '{"query":"mutation 
createMember($input: MemberInput!) {\n  createMember (input: $input) 
{\n      first_name\n      middle_initial\n      last_name\n     
user_name\n      pitch\n      main_skill_title\n    \tskill_id_array\n      
skills_comments\n      other_skills\n      links\n      country\n      
email\n      member_status\n  }\n}"}' --compressed

1 Ответ

0 голосов
/ 02 июля 2019

Немного сложно объяснить, но мы, наверное, все будем там. Я пробовал разные «решения», и остатки одного из них случайно остались в моем объекте данных JSON. Полный объект имеет больше свойств, чем мой краткий выше. Массив не должен быть "[]" в JSON. Я устал и отчаялся прошлой ночью. Я изменил распознаватель на тот, который выложил выше, но он не устранил проблему, поскольку эксперимент в JSON вызвал ту же ошибку, что и раньше. Поэтому я искал не в тех местах. Как только я заметил и удалил кавычки, все данные моего объекта были опубликованы в базе данных Postgres.

Код выше работает.

Было бы хорошо, если бы были более конкретные ошибки GraphQL. Я подозревал, что это очень общее, но это не помогло. Это не указывало на то, что исходная проблема была в распознавателе, а позже возникла ошибка ввода данных.

...