프로젝트 기능 구현하기
■ 반려동물 입장 가능 장소 중복 제거(전체 추천 장소 띄우기 코드와 동일)
https://lu-delight.tistory.com/247
■ a 장소 반려동물 동반 가능 체크 수 / a장소 총 리뷰 수 → percent 로 db 저장
percent가 50 이상인 경우에만 반려동물 동반 가능 장소 추천 리스트로 띄우기
db에 직접 percent와 with를 넣었고
추후 값을 받아 저장 될 percent는 리뷰 등록할 때 반려동물 동반 가능 체크박스를 체크하면
리뷰를 등록한 전체 수 에서 체크한 리뷰 수를 나눠 퍼센트를 db에 저장하는 칼럼이다.
with는 반려동물 동반 가능 여부를 True와 False로 띄우는 것이다.
percent가 50 이상이 되면 반려동물 추천 장소에 띄우기 위해
if (percent >=50) 했다가 인식이 안되서 int를 사용하기로 했다.
그런데 javascript는 int가 아니라 parseInt라고 적어야 한다!!
if (parseInt(percent) > 49)
일단 여기까지 구현한 기능들을 다른 팀원이 branch에 올린 파일들에 합치기로 했다.
그런데 합치는게 정말 안끝날 것 같다...
일단 팀원분들이 합치신 파일을 이해하면서 내가 구현한 기능들을 맞춰 넣어야 했다.
예를 들어 a 기능을 구현하기 위해서 b 기능을 구현했었는데
다른 팀원이 b 기능의 틀을 만들어 놓아서 거기에 맞게 변수를 바꾸고,
사용하는 db의 칼럼들이 팀원분들 마다 다 달라서
내가 필수적인 요소들을 다 확인을 해야하기 때문에 그게 시간이 오래걸렸다.
그리고 구현 코드 넣다가 중간에 코드가 변경되서 합치다가 새로 다시 시작했다. 😂
그리고 또 기능을 합쳐서 실행을 시키면 내가 구현했을 때의 코드들이 실행이 안되기 시작했다. 😥
팀원분들이 작성하셨다고 한 기능들도 일부 수정해야하고
내가 구현한 기능들이 구현 안되는 것도 수정해야하고 에러 수정하다가 하루가 가는 것 같다.
특히 팀원분들이 구현한 기능들은 내가 작성한게 아니라서 이해하는데 조금 시간이 걸릴 것 같다.
또 한 번 건들면 여러 개가 건들여야 되니깐 조심스럽기도 하다.
밑에가 여기에 해당이 되는데
내가 마커를 찍어줘야하는 기능을 넣었는데 이상하게 마커가 하나밖에 안찍혀서 db를 확인해봤더니
lat과 lng 각각에 한꺼번에 들어가서 첫번째 장소만 마커가 찍혀있다.
일단 내가 작성할 때는 나타나지 않다가 합치면서 나타난 오류는 현재
reviews collection에 like 값을 가져와서 좋아요 버튼을 구분해야하는데
like가 없다고 에러가 떠서 like 값이 없어서 에러가 뜨는 걸까 해서
try~catch로 에러뜨면 like는 False 라고 설정했더니
like가 True인 곳에서도 False로 인식되어서 버튼이 좋아요 누르지 않은 버튼으로 되어있었다.
flask에서 값을 제대로 가져오는지 print 해봤더니 빈 값으로 나왔다 → [ ]
like가 있고 값도 있는데 collection을 잘 못 입력했는지 아무리 봐도 잘 되어있고
내가 따로 작성할 때는 에러가 안떴는데 왜 떴는지도 모르겠다...
새벽까지 like 오류를 어떻게 해야할지 팀원분들과 고민했는데 답이 안나와서 어떻게 할까하다가
마침 다른 팀의 분들이 게더에 놀러오셔서 물어봤다. 그리고 그 답이 나왔다...!!
코드 중에 like를 실행하려면 id 값을 서버에 전달해서 서버에서 id에 해당하는 like 값을 가져와
띄워주는 건데 해당 id가 적힌 db가 없어서 undefined로 뜨는 것이었다.
(그것도 모르고 collection 잘못적은건지 ajax를 잘못적었는지만 확인했다...!!)
왜 내가 작성했을 때의 코드는 실행이 된건지 확인해보면 합치면서 다른 팀원분이 작성했던 코드 중에
id 입력 값을 직접 주는데 이걸 보고 내가 전역변수로 id 값을 새로 생성하면서 db에 없는 id 값을 입력했더니
그렇게 나타난 것이었다.
여기서 조언을 많이 받았는데
1. like 값을 문자열로 "Ture", "False"를 db에 넣었는데 boolean 값으로 넣어도 실행이 된다고 한다.
2. 오류가 뜰 때는 처음부터 어떻게 흐름이 시작되는지 보기
(id 값을 줄 때 그 id 값이 없어서 like가 안뜨는 것 처럼)
3. 그리고 console로 계속 확인하면서 실행시키기
또 하나 경도와 위도가 왜 한꺼번에 들어가는지 여쭤봤다.
(* 참고로 이 코드가 어떻게 쓰였는지 ctrl + shift + enter하면 어느 파일에서 쓴건지 알 수 있다. )
그 이유는 반복문을 도는데 배열안에 계속 push를 하면서 하나의 변수에 여러 개가 들어갔다.
그런데 db에는 배열 값이 아니라 ,로 들어가고 있다. (이 코드는 따로 확인해봐야 된다라고 하셨다)
그리고 장소를 검색하면 그 장소에 해당하는 여러 장소들이 뜨는데 (ex. 카페를 검색하면 전국에 있는 카페가 뜬다.)
그 장소에 해당하는 모든 위도와 경도를 수집하는 코드가 있어서
장소와 주소는 잘 들어가는데 위도와 경도는 카페를 검색했을 때 뜨는 모든 장소들의
위도와 경도가 다 저장되고 있다는 것이다...!
(어떻게 코드만 보고 해석을 할 수 있는건지 신기했다... 그 덕분에 나도 코드를 이해하게 되었다.)
그렇지만 내가 코드를 작성한 게 아니라서 그분도 어떤 의도로 코드를 작성했는지 모르겠다고 하셨다.
+ 로그인 하지 않고 임의의 id 값으로 test1을 줘서 test1으로 있을 때 좋아요 버튼을 누르면
로그인하라는 alert 창을 띄우고 alert 창을 닫으면 바로 로그인 하는 창으로 연결시켜줬다.
+ 반려동물 동반 가능 장소와 모든 추천 장소 띄우기 구현했다.
+ 좋아요 총 카운트 개수 띄우기
+ 좋아요 버튼 구분하기 (id가 없는 경우 default 값으로 좋아요 안누른 버튼으로 띄우기)
+ css 수정
코드 수정해주기
- 리뷰를 저장하면 리뷰가 떠야하는데 안뜸
- percent 계산한 코드 작성했는데 작동이 안됨
- 좌표 lat, lng db저장 코드 살펴보기 (그 후 마커 작동 되는지 살펴보기)
- 리뷰 저장하기에 따로 좋아요 버튼이 있는데 미구현함
추가적으로 기능 더 구현하기
@ 코드 다 수정하면 추천 목록 리스트에 특정 장소 클릭 시 지도에서 해당 마커로 줌 해주기
과연 전체적인 코드 수정하고 추가적인 기능을 구현할 수 있을까??
타임어택 구현 테스트
일단 거의 구현 못했다고 봐도 될듯하다,,😥 처음에 일단 할 수 있는 거 먼저 하자 하고
코드를 작성했는데 코드를 작성하면서 브라우저를 새로고침했더니 작성된 코드로 반영이 되지를 않아서
계속 ctrl + shift + r만 누르다가 파이썬 재실행했다. 왜 새로고침해도 반영이 안되는건지 모르겠지만🤔
답안코드가 나와서 추후에 답안 코드 해석을 해야하는데 할게 너무 많다...
아직까지 aws, 심화강의를 다 듣지 못했다. 타임어택 구현 테스트 코드도 해석해야하고
공부에 집중하고 싶은데 학교 시험 때문에 준비할게 너무 많아서 자꾸 밀리고 있다,,
다음주부터 4~5주간 중간고사 + 졸업시험 10과목을 봐야한다,,,,
공부하면서 졸업 빨리 해버리려고 했는데 지금이라도 중도휴학하고 싶은 마음이다.😭😭😭
일단 2차 프로젝트 발표가 다음주 19일 화요일이라 이틀 남았는데
그 전까지 준비를 잘 끝내서 마무리를 지었으면 좋겠다.