ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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. 삼항연산자를 이용해 키워드의 맨 앞에 공백이 있을 경우에만 공백 제거

     

     

     

    댓글

Designed by Tistory.