React-Redux: Post action fails with a 500 error

喜欢而已 提交于 2020-04-17 22:39:28

问题


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' \

回答1:


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)


来源:https://stackoverflow.com/questions/61136375/react-redux-post-action-fails-with-a-500-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!