update: (req, res) => {
const uuid = req.params.id;//일치하는 함수를 작성해야함
let data;//같은 uuid 에 해당하는 body값을 data에 넣어줘야함
// TODO://1.배열이고 객체를 담고있음 배열의 각 요소에대해 찾고 찾은 객체의 값을
for(let i =0 ; i <flights.length ; i++){
if(flights[i].uuid === uuid){
flights[i].arrival_times= req.body.arrival_times ? req.body.arrival_times : flights[i].arrival_times;
flights[i].departure= req.body.departure ? req.body.departure : flights[i].departure;
flights[i].destination= req.body.destination ? req.body.destination : flights[i].destination;
flights[i].departure_times= req.body.departure_times ? req.body.departure_times : flights[i].departure_times;
data = flights[i]
return res.status(200).json(data);
}}
update: async (req, res) => {
let data;
flights.forEach((item) => {
if (req.params.id === item.uuid) {
if (req.body.departure !== undefined) { item.departure = req.body.departure; }
if (req.body.destination !== undefined) { item.destination = req.body.destination; }
if (req.body.departure_times !== undefined) { item.departure_times = req.body.departure_times; }
if (req.body.arrival_times !== undefined) { item.arrival_times = req.body.arrival_times; }
data = item;
}
});
return res.status(200).json(data);
}
나는 for문을 사용해서 풀어보았지만 forEach를 사용한다면 아래방법으로 사용!
findById: (req, res) => {
// TODO:
const uuid = req.params.id
let idFiltering = flights;
return res.json(idFiltering.filter(flight => flight.uuid === uuid ));
},
findById: (req, res) => {
const data = flights.filter(item => req.params.id === item.uuid);
if (data.length > 0) {
return res.status(200).json(data);
} else {
return res.status(404).json(null);
}
return으로 바로 도출하느냐 if문을 써서 마지막에 짧은 코드를 도출해느냐 차이!
findAll: (req, res) => {
const uuid = req.query.uuid;
const departure = req.query.departure;
const destination = req.query.destination;
const departure_times = req.query.departure_times;
const arrival_times = req.query.arrival_times;
// TODO:
//uuid 가 true 라면 flights의 uuid.fl
let flightsFiltering = flights;
flightsFiltering =
uuid ? flightsFiltering.filter(flight => flight.uuid === uuid) : flightsFiltering;
///필터를 작성을해서 deparuture_times와 arrival_times이 같을때
flightsFiltering =
departure ? flightsFiltering.filter(flights =>flights.departure ===departure) : flightsFiltering;
flightsFiltering =
destination ? flightsFiltering.filter(flights => flights.destination === destination) :flightsFiltering;
flightsFiltering =
departure_times ? flightsFiltering.filter(flights => flights.departure_times === departure_times) : flightsFiltering;
flightsFiltering =
arrival_times ? flightsFiltering.filter(flights => flights.arrival_times === arrival_times) : flightsFiltering;
return res.json(flightsFiltering);
findAll: (req, res) => {
if (req.query.departure_times !== undefined && req.query.arrival_times !== undefined) {
const list = flights.filter((item) => {
return new Date(item.departure_times).getDate() === new Date(req.query.departure_times).getDate() &&
new Date(item.arrival_times).getDate() === new Date(req.query.arrival_times).getDate();
});
return res.status(200).json(list);
}
if (req.query.departure !== undefined && req.query.destination !== undefined) {
const list = flights.filter((item) => {
return item.departure === req.query.departure && item.destination === req.query.destination;
});
return res.status(200).json(list);
}
return res.json(flights);
나는 3항연산자를 사용해서 출발지,도착지,출발시간,도착시간을 한블럭에 담았지만 new Dete 함수를 사용해서 시간에 대한 리스트는 따로작성하고 나머지 부분은 엔드연산자를 통해 하는 방법도 있다는걸 알았다. new Date.. 이럴때도 쓸 수 있구나
findById: (req, res) => {
// TODO:
const uuid = req.query.flight_uuid
const name = req.query.name
const phone = req.query.phone
let filteredBooking = booking;
filteredBooking = uuid ? filteredBooking.filter(item => item.flight_uuid === uuid) : filteredBooking;
filteredBooking = name ? filteredBooking.filter(item => item.name === name) : filteredBooking;
filteredBooking = phone ? filteredBooking.find(item => item.phone === phone) : filteredBooking;
return res.status(200).json(filteredBooking);
},
findById: (req, res) => {
if (req.query.flight_uuid !== undefined) {
const filtered = booking.filter(item => item.flight_uuid === req.query.flight_uuid);
return res.status(200).json(filtered);
}
if (req.query.phone !== undefined) {
const filtered = booking.filter(item => item.phone === req.query.phone);
if (filtered.length === 0) {
return res.status(404).json([]);
}
const [{ uuid, flight_uuid, name, phone }] = filtered;
return res.status(200).json({ uuid, flight_uuid, name, phone });
}
return res.status(200).json(booking);
},
변수를 처음에 선언해주느냐 아니면 후자에 넣어버리냐 차이인것같다. filter를 사용하면 배열이 도출되므로 json[]을 사용한것에 주목해야겠다!
create: (req, res) => {
const { flight_uuid, name, phone } = req.body;
booking.push({
flight_uuid,
name,
phone
});
res.location(`/book/${flight_uuid}`);
return res.status(201).json({ book_id: flight_uuid });
},
create: (req, res) => {
// TODO:
//객체를 받아와서 배열에 넣기 , 넣은 값에 대한 id를 리턴해줘야 한다.
const data = req.body
booking.push(data)
return res.status(201).json({flight_uuid: data.flight_uuid});// { key : value} 리턴해줬음
},
body에있는 녀석을 바로 데이타로 불러오는것과 하나하나 주소를 불러와서 사용해주는것! 다만 여기서 flight_uuid를 key값으로 data.flight_uuid를 value로 리턴해준것에 주목하자 간단한건데 너무 어렵게 생각해서 힘들었음!
const airports = require('../repository/airportList');
module.exports = {
// [GET] /airport?query={query} 요청을 수행합니다.
// 공항 이름 자동완성 기능을 수행합니다!
findAll: (req, res) => {
if (req.query.query !== undefined) {//쿼리의 쿼리 url에서 ?에 해당하는녀석이 쿼리임
console.log(req.query.query);
const list = airports.filter((item) => {
return item.code.includes(req.query.query.toUpperCase());
});
return res.status(200).json(list);
}
res.json(airports);
}
};
req.query.query 쿼리에서 불러온녀석의 쿼리가 존재할때 필터링해서 대문자로 만들어주는것이다! 처음할때 이게 긴가민가했으니 주목!
'Node.js' 카테고리의 다른 글
[DB] find()와 Indexing하는 방법 (0) | 2022.04.25 |
---|---|
[express] 미들웨어 (전역 미들웨어, 직접 정의해서쓰는 미들웨어) (0) | 2022.04.25 |
[node.js] 상위 디렉토리 접근방법 (0) | 2022.04.24 |
마이그레이션이란? (0) | 2022.04.23 |
[node.js/express/CORS]server 만들기 (0) | 2022.04.07 |