Отправить массив из состояния реакции на узел / экспресс - PullRequest
0 голосов
/ 04 мая 2020

Я искал, как отправить массив с моего переднего конца реагирования на мой узел / express. Мой первый метод был такой. Реагируйте:

saveUpdates = (clickEvent) => {
    var list = [];
    var length = this.props.title.length;
    var tally = 0;
    for (var i = 0; i < length; i++) {
        tally = tally + 1;
        var x = document.getElementById(tally).selectedIndex
        var y = document.getElementById(tally).options
        list.push(y[x].text)
    }

 const myHeaders = new Headers();
    myHeaders.append('Authorization', localStorage.getItem('token'));
    const newQuantity = new FormData();
    newQuantity.append('quantity', list)
    newQuantity.append('userID', localStorage.getItem('customerID'))

    fetch('http://localhost:5000/updateQuantity', {
                                                method: 'POST',
                                                headers: myHeaders,
                                                body: newQuantity
    })

В этом методе я помещаю новые значения в мой список переменных, инициализированный как массив. Похоже, отправить на мой задний конец хорошо. Я console.log значение в узле, и мой массив выглядит следующим образом (этот конкретный экземпляр имеет только два элемента):

5,3

Проблема с этим заключается в том, что я в конечном итоге цикл по элементам этого массива в мой узел для использования в запросе mysql, и он считает запятую как элемент. Есть ли способ это исправить? Могу ли я как-нибудь переформатировать этот массив?

Мой другой вариант - установить массив списка в состояние и отправить состояние через заголовок. Вот как я это сделал:

    this.setState({totalQuantity: list})

    const myHeaders = new Headers();
    myHeaders.append('Authorization', localStorage.getItem('token'));
    const newQuantity = new FormData();
    newQuantity.append('quantity', this.state.totalQuantity)
    newQuantity.append('userID', localStorage.getItem('customerID'))

    fetch('http://localhost:5000/updateQuantity', {
                                                method: 'POST',
                                                headers: myHeaders,
                                                body: newQuantity
    })

Этот код очень похож на первый метод. Однако здесь я устанавливаю свой массив списков в состояние (элемент состояния totalQuantity инициализируется как массив), а затем отправляю состояние через заголовок. Тем не менее, когда я делаю это и console.log результат в моем запросе пост узла, я получаю пустую строку. Кажется, ничего не посылает. Он даже не говорит undefined или null, а просто печатает пустую строку (я проверял печать строк выше и ниже). Является ли любой из этих методов приемлемым для отправки массива с реакции на узел через заголовок? Если да, какие настройки я могу внести, чтобы исправить эти проблемы?

1 Ответ

0 голосов
/ 04 мая 2020

Вы должны преобразовать массив в массив перед тем, как отправлять его с телом, а затем на стороне сервера, вам нужно проанализировать его снова. POST-запрос с Fetch API?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...