-
HTTP Request의 query로 온 배열을 이용해 필터링 할 때Problem-Solving 2022. 3. 25. 11:04
< 문제상황 >
req.query로 "["화창한", "신나는", "눈이오는"]" 과 같이 해시태그를 배열 + 문자열 형식으로 받고 이 해시태그를 포함하는 게시글들을 데이터베이스에서 가져와야 하는 상황이다. 하지만, 로직 구현 후 데이터베이스에 쿼리를 날렸을 때 빈 배열을 받아오는 문제가 발생했다.
: req.query로 받아온 hashtags에서 양쪽 대괄호를 날리고(문자열이니까) ' , ' 쉼표를 기준으로 나눠서 배열로 만들어주기
: 그래서 내가 새로 정렬한 hashtags가 어떤 형식인지 파악하기 위해 Postman을 이용해 확인해보니 "도시"라는 키워드 안에 공백이 포함되어 있었다.
=> .split(',') 쉼표를 이용해 배열을 나눠주니 배열의 각 요소에 공백도 포함되는 문제!
< 접근 1 >
현재 새로 정렬한 hashtags의 각 키워드 앞에 공백이 포함되는 게 문제이니 String.replace( ) 메소드를 이용해 모든 공백을 제거하는 방법을 시도했다.
: 정렬한 hashtags의 각 요소에서 모든 공백 제거
: 하지만 모든 공백을 제거하니 '비가 오는'이나 '눈이 오는' 같이 키워드 안에 공백이 포함되어 있어야 하는 경우에도 모두 제거하는 문제가 발생했다.
< 접근 2 >
그래서 String.replace( )와 정규표현식을 이용해 모든 공백을 제거하기 보다 각 요소의 맨 앞에 공백이 있을 경우에만 제거하는 식으로 코드를 작성해 보았다.
: 키워드의 맨 앞에 공백이 있을 경우에만 공백 제거
: 이후Postman을 이용해 확인해보니 의도한 대로 키워드 정렬이 잘 되었고 데이터베이스에서 해당 해시태그들을 포함하는 게시글들만 가져올 수 있었다.
< 해결 과정 >
1. String.replace( ) + 정규 표현식을 이용해 공백 제거
2. 삼항연산자를 이용해 키워드의 맨 앞에 공백이 있을 경우에만 공백 제거
'Problem-Solving' 카테고리의 다른 글
mongoDB 불필요 쿼리 제거 (0) 2022.04.05 AWS : ELB를 이용한 HTTPS 구현 (0) 2022.03.28 카카오 맵 API 실행 안되는 경우 (0) 2022.03.18 AWS : EC2 서버실행 오류 (1) 2022.03.07 AWS : EC2 서버에 연결되지 않을 경우 (1) 2022.03.02