Jack23
Jack23

Reputation: 1396

React-Redux: Post action fails with a 500 error

I'm trying to insert data in my the DB using react and redux.

Usign postman or cocoaRestClient to try the api call I pass data like form-data, so I think that I need to pass form-data to.

I have created this file for the form:

Form.js

//.....
this.state = {
      newMeeting:{
        meeting: {}
      },
//....

handleChange = (e) => {
    let newMeeting = this.state.newMeeting;
    newMeeting.meeting[e.target.name] = e.target.value;
    this.setState({ newMeeting });
  };

  handleSubmit(event) {
    event.preventDefault();
    console.log("NEWMEETING: ", this.state.newMeeting);
    let arraymeeting = this.state.newMeeting
    var addmeeting = new FormData()
    Object.keys(arraymeeting).map((item, i) => {
      let $val = arraymeeting[item];
      console.log("$VAL: ", $val)
      addmeeting.append(item, typeof $val === "object" || Array.isArray($val) ? JSON.stringify($val) : $val)
    })
    this.props.addMeeting(addmeeting)
  }
render() {
    return (
      <form onSubmit={this.handleSubmit}>

        <div>
          <label>Meeting Name:</label>
          <input
            type="text"
            name="meeting_name"
            onChange={(event) => this.handleChange(event)}
          />
        </div>
        <div>
          <label>Date:</label>
          <input
            type="text"
            name="date"
            onChange={(event) => this.handleChange(event)}
          />
        </div>
         <div>
          <label>Hour</label>
          <input
            type="text"
            name="hour"
            onChange={(event) => this.handleChange(event)}
          />
        </div>

I think to pass the data like form-data, but the API response me a 500 error.

I have tried to pass data like form data using other program (as I mentioned before) and it works. Do you know how can I resolve?

Thank you

EDIT:

Curl from postman:

curl --location --request POST 'MYAPILink' \
--header ': 11' \
--form 'meeting_name=general name' \
--form 'date=2020-04-10' \
--form 'hour=09:00' \

Upvotes: 0

Views: 245

Answers (1)

Maxim Mazurok
Maxim Mazurok

Reputation: 4138

Replace:

-let arraymeeting = this.state.newMeeting
+let arraymeeting = this.state.newMeeting.meeting

It should solve the problem. Basically, you want to make sure that FormData is equal to:

const m = new FormData();
m.append('meeting_name', this.state.newMeeting.meeting.meeting_name); 
m.append('date', this.state.newMeeting.meeting.date);
m.append('hour', this.state.newMeeting.meeting.hour)

Upvotes: 1

Related Questions