TIL 66일차 - 거리 표시 추가, ERD 변경, migrate, models 폴더 수정

박찬웅·2023년 4월 12일
0

항해99

목록 보기
71/105

23년 4월 12일

시도 한 것, 알게 된 점

오늘 내가 시도 한 것은 어제 반경 내에 거리를 조회 하는 코드를 작성하였다. 하지만 어제 작성한 코드에서는 현 위치에서 해당 맛집까지 얼마나 거리 차이가 나는지는 반영하지는 않았다. 그래서 해당 코드를 추가를 하였고, 동시에 해당 거리가 짧은 거리부터 조회 할 수 있게 구현을 하였다.

shops.sort((a, b) => {
                const userLocate = { latitude: x, longitude: y };
                const shopALocate = { latitude: a.x, longitude: a.y };
                const shopBLocate = { latitude: b.x, longitude: b.y };
                const distanceA = haversine(userLocate, shopALocate, { unit: 'meter' });
                const distanceB = haversine(userLocate, shopBLocate, { unit: 'meter' });
                return distanceA - distanceB;
            });

먼저 두 거리를 비교해서 짧은 거리를 이용해서 sort 함수를 이용을 하였다.

const shopInfo = {
                    shopId: shops[i].shopId,
                    address: shops[i].address,
                    x: shops[i].x,
                    y: shops[i].y,
                    shopName: shops[i].shopName,
                    thumbnail: shops[i].thumbnail,
                    menuName: shops[i].menuName,
                    maxPrice: shops[i].maxPrice,
                    minPrice: shops[i].minPrice,
                    category: shops[i].category,
                    totalDistance: distance.toFixed(0) + " m"
                };
                // 5. 그 계산한 값이 if문을 사용해서 range(예시에는 500) 값보다 작는 조건문을 쓴다. => 3번의 자료를 저장한다
                if (distance <= range) {
                    // result.push(shops[i]);
                    result.push(shopInfo); // 6. 조건에 맞는 가게 정보를 push함수를 사용해서 result 배열에 추가한다
                }

그리고 나서 다음 코드를 추가를 해서 각각의 컬럼에다 다시 조합을 하였다. 그리고 마지막에 shopInfo push 해서 result로 다시 가공을 하면 되었다.

이후에 회의를 통해서 API의 전반적인 수정이 필요했고, 우리도 DB도 많이 변경되었다. 그래서 바뀌어진 ERD는 다음과 같이 바뀌었다.

먼저 Users 테이블에선 원래는 아이디 비번이지만 우리는 소셜 로그인으로 구현하기 때문에 이메일, 닉네임, 프로필사진, 성별로 변경하였다.
다음 Shops는 크게 바뀌어진거는 없고 경도, 위도를 x,y에서 lng, lat로 바꾼것이 전부다.
그리고 나머지는 새로 추가된 것인데 원래 Reviews에서 Feeds라는 테이블로 바뀌었고 여기서 Feeds라는 예전에 했던 게시글과 비슷하게 후기들을 적는 데이터를 저장하기 위해서 추가 했고, Scrap도 원래는 Likes의 좋아요 기능에서 해당 가게들을 스크렙 기능을 추가를 하였다. 마지막으로 Tags는 Feeds에서 적은 Teg들을 관리하는 테이블을 만들었고, 오늘 밤에 내가 migrate, models 폴더들 수정을 하는 것으로 마무리 하였다.
전반적으로 계획이 많이 바뀌었고, 추가된 요소들이 많아서 앞으로 많이 바빠질 것 같다. 그래도 오늘 현 위치에서 거리가 얼마나 차이나는지를 보여주는 기능을 구현했고, 거기서 가까운 거리부터 나타나게 구현을 마무리 하였다. 사실 이 부분은 chatGPT의 도움을 받아서 구현하는데 성공하였다. 확실히 모르는것 있을 때 구글링도 좋지만 ChatGPT 도움 받는것도 중요한 것 같다.

앞으로 할 일

내일은 DB를 모두 Drop 하고 다시 새로 만들어서 해당 컬럼에 맞게 전반적으로 코드 수정 하는 작업을 해서 다시 3차 배포를 해야 하는 것으로 목표를 담아야 할 것 같다.

profile
향해 13기 node.js 백앤드

0개의 댓글