Я сведу проблему к простому примеру.У меня есть компонент таблицы, отображающий таблицу с запрашиваемыми данными.У меня также есть небольшая форма, которая позволяет пользователям вводить данные в таблицу.У меня проблема в том, что значения по умолчанию для полей ввода являются пустыми строками.
Пример поля ввода:
<td><input type="text" placeholder="Nombre" name="name" onChange={this.handleChange} value={this.state.name}/></td>
Предположим, что состояние содержит пустую строку в качестве значения по умолчанию дляполе ввода
this.state={name:' '}
Предположим также, что я хочу отправить в моей форме пустую строку в базу данных.Я делаю мутацию способом apollo, с graphql:
const ADD_CONTACTS = gql`
mutation createContact(
$name: String,
){
createContact(
name: $name
){
id
name
}
}`
<Mutation mutation={ADD_CONTACTS}>
{createContact=>(
<form onSubmit={async e=> {
e.preventDefault();
let name = this.state.name;
await createContact({variables : {
"name":name
} })
}}
>
<table>
... table markup with input fields
</form>
)}
</Mutation>
Хорошо, это общий контекст.В действительности форма содержит 6 полей.Но проблема в том, что когда я отправляю пустую строку в запрос внутри переменной, в тот момент, когда он отправляет запрос на сервер, он изменяет пустую строку на значение null
, так что я получаю эту ошибку:
Ошибка GraphQL: SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Имя столбца не может быть пустым
Я проверил сервер с использованием graphiql, и сами запросы могут принимать пустые строки, но, похоже,что компонент мутации или apollo где-то конвертирует мою пустую строку, которую я передаю переменным graphql, в null.
Мне удалось обойти этот сценарий, но это определенно неправильный способс этим.Если бы я мог каким-то образом заставить Аполлона отправлять пустые строки вместо нуля, это решило бы проблему.
, спасибо любому, кто знает, почему это я