Я определил мутацию, как показано ниже, с полем электронной почты, помеченным как обязательное
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!»