ошибка .map не функция, данные больше не массив - PullRequest
0 голосов
/ 19 марта 2019

В предыдущем вопросе я спросил, почему я получаю эту ошибку «карта не является функцией», и там я понял, что это потому, что после обновления данных в моем приложении response.message больше не был в формате массива для этого.Скрипт, в котором я отображаю все мои данные, получил ошибку, потому что map работает только с массивом.Так что выяснить, почему произошла ошибка, было полезно, но я не могу найти причину в моем коде, почему мои данные после обновления больше не имеют формат массива.Поэтому я надеялся, что, возможно, кто-то увидит ошибку, которую я пропускал все время.Ниже я размещу фрагменты своего кода там, где, как мне кажется, могла произойти ошибка:

сценарий редактирования данных:

 export class VehicleEdit extends React.Component {
     constructor(props){
       super(props);

    const vehicleId = props.match.params.name;

    this.state ={
        vehicle: {}
    };

    getDetail(vehicleId).then((response) => {
        this.setState({
            vehicle: response.message,
        });
    });


}
updateManufacturer(manufacturer) {
    this.setState({
        vehicle: {
            ...this.state.vehicle,
            manufacturer,
        },
    });
}

updateModel(model) {
    this.setState({
        vehicle: {
            ...this.state.vehicle,
            model,
        },
    });
}
 onSubmit = (e) => {
    e.preventDefault();

    update(this.state.vehicle.name, this.state.vehicle).then((response) => {
        this.props.history.push('/vehicles');
    });
}
render() {
    return (

        <div>
        { (this.state.vehicle.name) ? (
            <form onSubmit={this.onSubmit}>
            <h1>{this.state.vehicle.name}</h1>
            <div>
            <label >Model: </label>
            <input type="text" name="model" id="model" value={this.state.vehicle.model} onChange={(e) => this.updateModel(e.target.value)} />
            </div>
            <div>
            <label >Manufacturer: </label>
            <input type="text" name="manufacturer" id="manufacturer" value={this.state.vehicle.manufacturer} onChange={(e) => this.updateManufacturer(e.target.value)} />
            </div> 
        ) : ( <p>Loading student details...</p>)}          
        </div>

    );
}
 }
 export default VehicleEdit;

мое обновление в моем приложении vehicle.service.js

 export const update = (name, vehicle, vehicles) => fetch(`${url}/vehicles/${name}/edit`, { 
    method: 'PUT', 
    body: JSON.stringify(vehicle),
    mode: 'cors', 
    headers: new Headers({
        'Content-Type': 'application/json',
    })
}).then((response) => {
    if(response.statusText === 'OK') {
        return response.json();
    }
    throw new Error('Something went wrong UPDATING vehicle with name' + name);
});

и мой маршрут обновления в моем собственном API:

// UPDATE VEHICLE
app.put('/vehicles/:name/edit', (req, res) => {
    let vehicle = null;
    console.log('update vehicle', [req.body]);

    if (vehicles[0] && vehicles[0].length) {
        vehicle = vehicles[0].filter((vehicle) => ('' + vehicle.name) === req.params.name);
    }

    if (vehicle) {
        vehicles = vehicles[0].map((s) => {
            return ('' + s.name) === req.params.name ? vehicles.push[req.body] : s;
        })

        res.send({
            status: config.STATUS.OK,
            message: [req.body],
        });
    } else {
        res.send({
            status: config.STATUS.ERROR,
            message: 'Could not find vehicle for update',
        });
    }


});

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

...