I am trying to edit a JSON data base of shifts. I am writing in Javascript using react. This is my understanding of the PUT syntax:
const editShift = async (changed, id) => { const res = await fetch(`http://localhost:5000/shifts/${id}`, { method: 'PUT', headers: { 'Content-type': 'application/json' }, body: JSON.stringify(changed) }) const data = await res.json() setShifts([...shifts, data]) }
data.json:
{ "shifts": [ { "title": "test", "startDate": "2018-06-25T07:30:00.000Z", "endDate": "2018-06-25T08:00:00.000Z", "allDay": false, "id": 1 }, { "title": "test2", "startDate": "2018-06-28T07:30:00.000Z", "endDate": "2018-06-28T08:00:00.000Z", "allDay": false, "id": 2 } ] }
The result is that the new shift will hold only the fields that have been changed and delete the rest. Any ideas why?
Advertisement
Answer
I had to send the whole updated shift into the changed field, with the fields that were not changed. I don’t know why but it works so okay.