더북(TheBook)

위 코드에서 query를 선언하는 방법이 조금 생소하지요?

const query = {
  ...(username ? { 'user.username': username } : {}),
  ...(tag ? { tags: tag } : {}),
};

이 코드는 username 혹은 tag 값이 유효할 때만 객체 안에 해당 값을 넣겠다는 것을 의미합니다. 다음과 같은 형식으로 query 객체를 만들면 어떨까요?

{
username,
  tags: tag
}

이런 객체를 query로 사용한다면 요청을 받을 때 username이나 tag 값이 주어지지 않습니다. 이 경우에는 undefined 값이 들어가게 됩니다. mongoose는 특정 필드가 undefined인 데이터를 찾게 되고, 결국 데이터를 조회할 수 없습니다.

코드를 다 작성했으면 다음과 같이 username, tag 쿼리 파라미터를 URL에 포함시켜서 요청을 해 보세요.

GET http://localhost:4000/api/posts?username=velopert
GET http://localhost:4000/api/posts?tag=태그

usernametag에는 여러분이 테스트용으로 작성한 포스트에서 사용하는 값을 넣으세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.