Компонент мутацииact-apollo отправляет пустые строки как ноль - PullRequest
0 голосов
/ 10 мая 2018

Я сведу проблему к простому примеру.У меня есть компонент таблицы, отображающий таблицу с запрашиваемыми данными.У меня также есть небольшая форма, которая позволяет пользователям вводить данные в таблицу.У меня проблема в том, что значения по умолчанию для полей ввода являются пустыми строками.

Пример поля ввода:

<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.

Мне удалось обойти этот сценарий, но это определенно неправильный способс этим.Если бы я мог каким-то образом заставить Аполлона отправлять пустые строки вместо нуля, это решило бы проблему.

, спасибо любому, кто знает, почему это я

1 Ответ

0 голосов
/ 15 мая 2018

Попробуйте удалить async и await.

...