module.exports = [ { uuid: 'af6fa55c-da65-47dd-af23-578fdba40bed', departure: 'ICN', destination: 'CJU', departure_times: '2021-12-02T12:00:00', arrival_times: '2021-12-03T12:00:00' }, ...
const flights = require('../repository/flightList'); const fs = require('fs'); module.exports = { // Advanced // [PUT] /flight/:uuid 요청을 수행합니다. // 요청 된 uuid 값과 동일한 uuid 값을 가진 항공편 데이터를 요쳥 된 Body 데이터로 수정합니다. update: (req, res) => { const { uuid } = req.params; const bodyData = req.body; // TODO: } };
update: (req, res) => { const { uuid } = req.params; const bodyData = req.body; let resultObj = {}; flights.map((el) => { if (el.uuid === uuid) { resultObj = {...el, ...req.body }; } else { return {...el}; } }); }
기존 더미 데이터 자체를 업데이트 해야되는데
map()을 이용하여 작성한 위의 코드는
업데이트 된 데이터와 기존의 더미데이터를 합쳐서
새로운 데이터를 생성하게 된다.
즉 데이터를 여러번 바꾼다고 요청할 경우
처음에 업데이트한 결과가 더미데이터에 적용되지 않아서
업데이트가 되지 않는것 같다.즉, 수정이 두번 이상 발생한다면 첫번째 요청과
두번째 요청 모두 적용되야 한다테스트에서 원하는 결과
기존 데이터 : {a: 1, b: 2, c: 3, d: 4}, 요청 {b: 8}
첫 요청 실행 : {a: 1, b: 8, c: 3, d: 4}, 요청 {c: 8}
모든 요청 결과 : {a: 1, b: 8, c: 8, d: 4}아래코드의 결과
기존 데이터 : {a: 1, b: 2, c: 3, d: 4}, 요청 {b: 8}
첫 요청 실행 : {a: 1, b: 8, c: 3, d: 4}, 요청 {c: 8}
모든 요청 결과 : {a: 1, b: 2, c: 8, d: 4}
const flights = require('../repository/flightList'); const fs = require('fs'); module.exports = { // Advanced // [PUT] /flight/:uuid 요청을 수행합니다. // 요청 된 uuid 값과 동일한 uuid 값을 가진 항공편 데이터를 요청 된 Body 데이터로 수정합니다. update: (req, res) => { const { uuid } = req.params; const bodyData = req.body; // 더미데이터에 있는 uuid와 요청받은 uuid의 값이 같은 데이터만 더미데이터에서 반환한다. const flight = flights.filter((data) => data.uuid === uuid)[0]; // 만약 uuid가 일치하는 데이터가 없다면 if (!flight) { // 클라이언트에 400오류와 응답을 전송한다. res.status(400).json("해당 데이터가 없습니다."); return; } // 위에서 필터로 뽑아낸 flight의 인덱스 번호를 변수에 할당한다. const idxOfFlight = flights.indexOf(flight); // 필터로 뽑아낸 flight객체에 요청받은 수정데이터를 덮어 씌워서 변수에 할당한다. const newFlight = { ...flight, ...req.body }; // 기존 더미데이터의 인덴스 idxOfFlight번호에 존재하는 객체를 newFlight객체로 바꾼다. flights.splice(idxOfFlight, 1, newFlight); // 바뀐 데이터를 응답해 준다. return res.json(newFlight); } };