Reputation: 1396
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
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