Обязательная проверка Graphql не работает при использовании пользовательского интерфейса GraphiQL с входными переменными

Я определил мутацию, как показано ниже, с полем электронной почты, помеченным как обязательное

type Mutation {
    bookTicket (person: PersonInput! ,email: String!): Ticket
}

input PersonInput{
    personId: ID!
    name: String!
    date: String!
    comment: String
}

Когда я пытаюсь выполнить мутацию через пользовательский интерфейс GraphIQl без передачи поля электронной почты, пользовательский интерфейс не вызывает ошибку проверки и вызывает конечную точку с пустым значением для поля электронной почты.

mutation($personInput:PersonInput!, $email :String!){
    bookTicket(person:$personInput,email: $email){
        id
    }
}


Variables
{
    "personInput": {
        "personId": "111",
        "name": "test",
        "date": "10-Oct-2018",
        "comment": "Book"
    }

}

Если я попытаюсь запустить мутацию со встроенными переменными, проверка будет работать нормально и покажет исключение, что электронное письмо не может быть пустым.

 mutation{
     bookTicket(person:{personId: "111",  name: "test", date: "10-Oct- 
     2018",comment: "Book"}
     email:""){
        id
     }
 }

Может ли кто-нибудь помочь мне узнать, почему проверка не работает в первом случае?

Я не уверен в том, что происходит, но, возможно, эта информация может оказаться полезной в вашем расследовании: пустая строка пройдет обязательную проверку (String!), Поэтому ваш второй пример, в котором электронное письмо имеет значение "" , прошли бы эту проверку, и ошибка, которую вы получаете, вероятно, вызвана бизнес-кодом? Я не смог воспроизвести сценарий вашего 1-го примера, где электронная почта не определена. Это определенно должно провалить проверку, и это то, что я испытываю в своих тестах. Я получаю эту ошибку: «Поле« email »переменной« email »имеет значение Null для типа« String », отличного от Null!»

felipe_gdr 21.10.2018 11:03

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

VINEET TALEKAR 23.10.2018 13:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
2
148
0

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