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 쿼리에서 불러온녀석의 쿼리가 존재할때 필터링해서 대문자로 만들어주는것이다! 처음할때 이게 긴가민가했으니 주목!

복사했습니다!